简单的异或加密会产生意外的结果 。。。 字符文本[256]; fgets(文本,255,标准文本); xorEncrypt(文本“a”); ... void xorEncrypt(字符*字符串,字符键) { int i,字符串长度=strlen(字符串); 对于(i=0;i

简单的异或加密会产生意外的结果 。。。 字符文本[256]; fgets(文本,255,标准文本); xorEncrypt(文本“a”); ... void xorEncrypt(字符*字符串,字符键) { int i,字符串长度=strlen(字符串); 对于(i=0;i,c,windows,encryption,xor,C,Windows,Encryption,Xor,代码似乎很好。您可能希望打印结果字符串,但XOR可能已将其中的一部分转换为不可打印的字符。还请注意,字符串中现在可能有空字符(例如“a^”a'=0)因此,结束不再由终止的空字符决定。能否显示完整的自包含示例输入和预期/实际的结果输出?除非传递字符串文字或任何其他常量字符串,否则代码看起来很好。请提供一个字符串,并准确说明您的输入和预期输出。添加了更多信息和示例。在xorEncrypt(文本,“a”);您必须输入“a”作为字符,而不是字符串,'a'。您的编译器没有警告您吗?我使用了“a”,只是在这

代码似乎很好。您可能希望打印结果字符串,但XOR可能已将其中的一部分转换为不可打印的字符。还请注意,字符串中现在可能有空字符(例如“a^”a'=0)因此,结束不再由终止的空字符决定。

能否显示完整的自包含示例输入和预期/实际的结果输出?除非传递字符串文字或任何其他常量字符串,否则代码看起来很好。请提供一个字符串,并准确说明您的输入和预期输出。添加了更多信息和示例。在
xorEncrypt(文本,“a”);
您必须输入“a”作为字符,而不是字符串,
'a'
。您的编译器没有警告您吗?我使用了“a”,只是在这里写错了。已编辑。字符串不能包含用作键的相同字符?没有理由不包含。但要知道字符串的长度,您不能依赖终止的空字符;您必须跟踪其长度h在一个单独的变量中。
...
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