我从XOR获得奇数输出。有人能告诉我我做错了什么吗?

时间:2014-11-29 18:41:18

标签: bit-manipulation xor

我正在研究一个基本的加密程序(编程新手)。在这个时刻,我正在尝试XOR 2十六进制值来创建密文。问题是,我的输出给了我奇怪的数据。

例如0x61 XOR 0x2a应该根据在线xor计算器给我4b,但在我的程序中我得到奇数输出。有人可以解释为什么我的输出不是4b等,以及如何正确修复它?

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>


    char my_string[5]="0x61, 0x6e, 0x74, 0x69, 0x64";
    char my_key[5]=   "0x2a, 0x44, 0x23, 0x01, 0x46";

    char cText;


    int main()
    {
    int i;



    for( i = 0; i<5; i++)
    {
        cText = my_string[i]^my_key[i];

        printf(" %i . The Cipher Text is %0x \n", i + 1, cText);


    }
    return;
    }

1 个答案:

答案 0 :(得分:0)

您的字符串初始化无效 - 您正在使用文字文本"0x61, 0x6e…"初始化字符串,而不是使用十六进制值0x61,0x6e等。

要使用数值初始化字符数组,请使用花括号而不是引号:

char my_string[5]= { 0x61, 0x6e, 0x74, 0x69, 0x64 };