使用XOR加密时某些字符为空的原因是什么?此外,如何在解密时对此进行补偿?
例如:
....
void basic_encrypt(char *to_encrypt) {
char c;
while (*to_encrypt) {
*to_encrypt = *to_encrypt ^ 20;
to_encrypt++;
}
}
Run Code Online (Sandbox Code Playgroud)
将为角色返回"无" k.显然,字符衰减对于解密是有问题的.
我假设这是由位运算符引起的,但我对二进制文件不是很好,所以我想知道是否有人可以解释.
k在这种情况下,它是否将一个元素转换为一些无空格的ASCII字符?可以通过选择y <x <z运算符来补偿吗,其中x是运算符?
最后,如果它没有得到补偿,除了猜测和检查之外,还有一个真实的解密策略来填补空白吗?
'k'具有ASCII值107 = 0x6B.20是的0x14,所以
'k' ^ 20 == 0x7F == 127
Run Code Online (Sandbox Code Playgroud)
如果您的字符集与ASCII兼容.127是\DELASCII格式,这是一个不可打印的字符,因此如果将其打印出来将不会显示.