简单的 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),因此结束不再由终止空字符确定。