在C#中删除两个字母,不对称

时间:2014-01-16 18:50:13

标签: c# encryption xor

所以,我有这个基本的加密功能,我真的卡住了。

String result = "";
....
result += ((char)('A' + ((message[i]) - 'A') ^ (key[j] - 'A')));

这个想法是,A = 0,B = 1,C = 2等,以及带有符号的符号的消息。 出于某种原因,如果我对'B'和'A','A'和'B'我得到不同的结果。我为什么要这样做?

2 个答案:

答案 0 :(得分:3)

添加的优先级高于XOR。您在XOR操作周围缺少一对括号。

result += (char)('A' + ((message[i] - 'A') ^ (key[j] - 'A')));

答案 1 :(得分:1)

您需要一组额外的括号。您的代码正在计算((message[i]) - 'A'),然后A添加到然后 XOr与(key[j] - 'A')。您需要将XOR操作包装在括号中,以便之后转换回char

然而,如果你把它分成几个不同的陈述,而不是试图在同一行上做很多不同的事情,这整个操作会更清楚。