简单的 XOR 加密产生意想不到的结果
Simple XOR encryption giving unexpected results
...
char text[256];
fgets(text, 255, stdin);
xorEncrypt(text, 'a');
...
void xorEncrypt(char *string, char key)
{
int i, string_length = strlen(string);
for(i=0; i<string_length; i++)
{
string[i]=string[i] ^ key;
}
printf("%s", string);
}
//user enters "test"
//result is: §♦↕§k (correct)
//user enters "abcdefg"
//result is empty
//user enters "testbca"
//result is "§♦↕§♥☻" (incorrect) and there is a beep sound
当我使用 'a'、'b'、'c' 等字符作为键时,它会给出空结果或一些随机符号,但会使用其他字母,如 'A', 'I'..., 可以正常解密了
代码看起来不错。可能您想打印结果字符串,但 XOR 可能已将其部分变成不可打印的字符。另请注意,字符串中现在可能有空字符(例如 'a ^ 'a' = 0),因此结束不再由终止空字符确定。
...
char text[256];
fgets(text, 255, stdin);
xorEncrypt(text, 'a');
...
void xorEncrypt(char *string, char key)
{
int i, string_length = strlen(string);
for(i=0; i<string_length; i++)
{
string[i]=string[i] ^ key;
}
printf("%s", string);
}
//user enters "test"
//result is: §♦↕§k (correct)
//user enters "abcdefg"
//result is empty
//user enters "testbca"
//result is "§♦↕§♥☻" (incorrect) and there is a beep sound
当我使用 'a'、'b'、'c' 等字符作为键时,它会给出空结果或一些随机符号,但会使用其他字母,如 'A', 'I'..., 可以正常解密了
代码看起来不错。可能您想打印结果字符串,但 XOR 可能已将其部分变成不可打印的字符。另请注意,字符串中现在可能有空字符(例如 'a ^ 'a' = 0),因此结束不再由终止空字符确定。