反向^运算符用于解密

zyr*_*m64 1 c security encryption algorithm math

我试图反转以下代码,以提供一个获取缓冲区并解密它的函数.

void crypt_buffer(unsigned char *buffer, size_t size, char *key) {
    size_t i;
    int j;

    j = 0;
    for(i = 0; i < size; i++) {
        if(j >= KEY_SIZE)
            j = 0;
        buffer[i] ^= key[j];
        j++;
    }
}
Run Code Online (Sandbox Code Playgroud)

我担心如果简单buffer[i] ^= (1/key[j]);就足以解密加密文件了.但是会有一些截断问题,不是吗?

Art*_* B. 6

这不是电力运营商.它是XOR运算符.你注意到XOR运算符的是那个x ^ k ^ k == x.这意味着当使用相同的密钥和密文而不是明文调用时,加密函数已经是解密函数.

  • @BrianMcFarland:如果`key`数据至少与`buffer`一样长,你只能说你曾经使用过"一次性填充",否则`j> = KEY_SIZE`测试开始了它开始第二次使用"pad",并且:再次使用相同的`key`数据来加密其他数据. (2认同)