反向^运算符用于解密

时间:2015-06-22 15:53:50

标签: c algorithm security math encryption

我正在尝试反转以下代码,以便提供一个获取缓冲区并对其进行解密的函数。

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++;
    }
}

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

在C中,^不是“幂”运算符(没有这样的运算符),而是“xor”运算符。

对你来说这是个好消息(我猜),因为“xor”的反向操作本身就是“xor”: - )