我正在尝试反转以下代码,以便提供一个获取缓冲区并对其进行解密的函数。
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]);
是否足以解密加密文件。但是截断会有一些问题,不是吗?
答案 0 :(得分:6)
这不是电力运营商。它是XOR运算符。您注意到XOR运算符的是x ^ k ^ k == x
。这意味着当使用相同的密钥和密文而不是明文调用时,加密函数已经是解密函数。
答案 1 :(得分:1)
在C中,^
不是“幂”运算符(没有这样的运算符),而是“xor”运算符。
对你来说这是个好消息(我猜),因为“xor”的反向操作本身就是“xor”: - )