吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1417|回复: 1
收起左侧

[已解决] 该加密算法的名称

[复制链接]
who4who 发表于 2019-8-16 01:21
本帖最后由 who4who 于 2019-8-22 09:01 编辑

我在三个程序中碰到了该加密算法,它应该是一种有名字的加密算法,但我不知道它叫什么名字。
下面是我重建的代码。请各位帮看一看,该算法名称是什么?
[C] 纯文本查看 复制代码
#include <stdint.h>
#include <string.h>

typedef struct {
  int head[2];
  int body[256];
} box_t;

/**
 *  @brief  扩展密钥,初始化盒
 *  @param[out] pb    密盒指针
 *  @param[in]  p_key 密钥指针
 *  @param[in]  l_key 密钥长度
 */
static void InitKeyBox(box_t *pb, const uint8_t *p_key, size_t l_key) {
  { // 初始化得 {{0,0}, {0,1,...,255}}
    pb->head[0] = 0;
    pb->head[1] = 0;
    for (int i = 0; i < 256; ++i)
      pb->body[i] = i;
  }
  { // 乱序 pb->body[]
    int x = 0;  // 下标于 pb->body[]
    int k = 0;  // 下标于 p_key[]
    for (int i = 0; i < 256; ++i) {
      int bi = pb->body[i];
      x = (uint8_t)(bi + p_key[k] + x);  // 算出另一处
      pb->body[i] = pb->body[x];
      pb->body[x] = bi;  // 交换 i 和 x 两处
      k = (k + 1 < l_key ? k + 1 : 0);  // k 循环下移
    }
  }
}

/**
 *  @brief  用密盒异或处理数据
 *  @param[in,out]  pb    密盒指针
 *  @param[in,out]  p_dat 数据缓冲
 *  @param[in]      l_dat 数据长度
 */
static void XorWithBox(box_t *pb, uint8_t *p_dat, size_t l_dat) {
  int x = pb->head[0];
  int y = pb->head[1];
  for (size_t i = 0; i < l_dat; ++i) {
    int dx, dy;
    // 准备下标
    x = (uint8_t)(x + 1);
    y = (uint8_t)(y + pb->body[x]);
    // 准备数据
    dx = pb->body[x];
    dy = pb->body[y];
    // 交换 x 和 y 两处
    pb->body[x] = dy;
    pb->body[y] = dx;
    // 异或
    p_dat[i] ^= pb->body[(uint8_t)(dx + dy)];
  }
  pb->head[0] = x;
  pb->head[1] = y;
}

/**
 *  @brief  加密或解密数据
 *  @param[in]      p_key   密钥
 *  @param[in,out]  p_dat   数据缓冲
 *  @param[in]      l_dat   数据长度
 */
void UnknownAlgorithm(const char *p_key, uint8_t *p_dat, size_t l_dat) {
  box_t box = {0};
  InitKeyBox(&box, (const uint8_t *)p_key, strlen(p_key));
  XorWithBox(&box, p_dat, l_dat);
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| who4who 发表于 2019-8-22 09:01
这是RC4算法。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 02:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表