互斥或密碼
簡單異或密碼(simple XOR cipher)是密碼學中一種簡單的加密算法,它按照如下原則進行運算:
- A \oplus 0 = A
- A \oplus A = 0
- (A \oplus B) \oplus C = A \oplus (B \oplus C)
- (B \oplus A) \oplus A = B \oplus 0 = B
其中\oplus為邏輯異或(XOR)運算的符號。按這種邏輯,文本序列的每個字符可以通過與給定的密鑰進行按位異或運算來加密。如果要解密,只需要將加密後的結果與密鑰再次進行按位異或運算即可。
例如,字符串「Wiki」(8位ASCII:01010111 01101001 01101011 01101001) 可以按如下的方式用密鑰11110011進行加密:
01010111 01101001 01101011 01101001 \oplus 11110011 11110011 11110011 11110011 = 10100100 10011010 10011000 10011010
此種加密方法類似對稱加密,故解密的方式如下:
10100100 10011010 10011000 10011010 \oplus 11110011 11110011 11110011 11110011 = 01010111 01101001 01101011 01101001
異或運算符常作為更為複雜的加密算法的組成部分。對於其本身來說,如果使用不斷重複的密鑰,利用頻率分析就可以破解這種簡單的異或密碼。如果消息的內容被猜出或知道,密鑰就會泄露。異或密碼值得使用的原因主要是其易於實現,而且計算成本小。簡單重複異或加密有時用於不需要特別安全的情況下來隱藏信息。
如果密鑰是隨機的(不重複),而且與消息長度相同,異或密碼就會更為安全。當密鑰流由偽隨機數發生器|pseudo-random number generator生成時,結果就是流密碼[1] 。若密鑰是真正隨機的,結果就是一次性密碼本,這種密碼在理論上是不可破解的。
在這些密碼的任何部分中,密鑰運算符在已知明文攻擊下都是脆弱的,這是因為明文 \oplus 密文 = 密鑰。