異或(XOR)運算加密/解密在線工具,工具鏈接:http://www.atoolbox.net/Tool.php?Id=857
異或(XOR)運算加密一種簡單高效、非常安全的加密方法。
異或(XOR)運算:
邏輯運算之中,除了 AND 和 OR,還有一種 XOR 運算,中文稱爲"異或運算"。
它的定義是:兩個值相同時,返回false,否則返回true。也就是說,XOR可以用來判斷兩個值是否不同。
true XOR true // false
false XOR false // false
true XOR false // true
true XOR false // true
XOR運算有一個很奇妙的特點:如果對一個值連續做兩次 XOR,會返回這個值本身。
// 第一次 XOR
1010 ^ 1111 // 0101
// 第二次 XOR
0101 ^ 1111 // 1010
上面代碼中,原始值是1010,再任意選擇一個值(上例是1111),做兩次 XOR,最後總是會得到原始值1010。這在數學上是很容易證明的。
XOR 的這個特點,使得它可以用於信息的加密。
message XOR key // cipherText
cipherText XOR key // message
上面代碼中,原始信息是message,密鑰是key,第一次 XOR 會得到加密文本cipherText。對方拿到以後,再用key做一次 XOR 運算,就會還原得到message。
二戰期間,各國爲了電報加密,對密碼學進行了大量的研究和實踐,其中就包括 XOR 加密。
戰後,美國數學家香農(Claude Shannon)將他的研究成果公開發表,證明了只要滿足兩個條件,XOR 加密是無法破解的。
-
key的長度大於等於message
-
key必須是一次性的,且每次都要隨機產生
理由很簡單,如果每次的key都是隨機的,那麼產生的CipherText具有所有可能的值,而且是均勻分佈,無法從CipherText看出message的任何特徵。也就是說,它具有最大的"信息熵",因此完全不可能破解。這被稱爲 XOR 的"完美保密性"(perfect secrecy)。
滿足上面兩個條件的key,叫做 one-time pad(縮寫爲OTP),意思是"一次性密碼本",因爲以前這樣的key都是印刷成密碼本,每次使用的時候,必須從其中挑選。
異或(XOR)運算加密/解密算法原理:
從加密的主要方法看,換位法過於簡單,特別是對於數據量少的情況很容易由密文猜出明文,而替換法不失爲一種行之有效的簡易算法。
從各種替換法運算的特點看,異或運算最適合用於簡易加解密運算,這種方法的原理是:當一個數A和另一個數B進行異或運算會生成另一個數C,如果再將C和B進行異或運算則C又會還原爲A。
相對於其他的簡易加密算法,XOR算法的優點如下。
(1)算法簡單,對於高級語言很容易能實現。
(2)速度快,可以在任何時候、任何地方使用。
(3)對任何字符都是有效的,不像有些簡易加密算法,只對西文字符有效,對中文加密後再解密無法還原爲原來的字符。