我正在研究一个基本的加密程序(编程新手)。在这个时刻,我正在尝试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;
}
答案 0 :(得分:0)
您的字符串初始化无效 - 您正在使用文字文本"0x61, 0x6e…"
初始化字符串,而不是使用十六进制值0x61,0x6e等。
要使用数值初始化字符数组,请使用花括号而不是引号:
char my_string[5]= { 0x61, 0x6e, 0x74, 0x69, 0x64 };