簡體   English   中英

用C#對兩個字母進行異或運算,不對稱

[英]Xor-ing two letters in C#, not symmetric

因此,我具有此基本的加密功能,而且我真的很堅持。

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

這個想法是,A = 0,B = 1,C = 2,依此類推,並以關鍵符號對消息進行逐個符號化。 由於某些原因,如果我對“ B”和“ A”以及“ A”和“ B”進行異或運算,則會得到不同的結果。 我為什么得到那個?

加法的優先級高於XOR。 您在XOR操作周圍缺少一對括號。

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

您需要額外的括號。 您的代碼正在計算((message[i]) - 'A') ,然后向其添加A然后(key[j] - 'A') 進行異或。 您需要將XOR操作包裝在括號中,以便隨后轉換回char

但是,如果您將整個操作分解成幾個不同的語句,而不是試圖在同一行上做很多不同的事情,那么整個操作將更加清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM