xor異或演算法學習

2021-08-22 02:20:36 字數 994 閱讀 9905

異或(xor)是乙個數**算符。它應用於邏輯運算。計算機符號為「xor」。其運算法則為:

a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

如果a、b兩個值不相同,則異或結果為1。如果a、b兩個值相同,異或結果為0。

異或也叫半加運算,其運算法則相當於不帶進製的二進位制加法:二進位制下用1表示真,0表示假,則異或的運算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進製,所以異或常被認作不進製加法。

a ⊕ a = 0

a ⊕ b = b ⊕ a

a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c

d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c

a ⊕ b ⊕ a = b

若x是二進位制數0101,y是二進位制數1011;則x⊕y=1110

真⊕假=真

假⊕真=真

假⊕假=假

真⊕真=假

c語言和c++語言的異或,是用「^」

message xor key // ciphertext

ciphertext xor key // message

戰後,美國數學家夏農(claude shannon)將他的研究成果公開發表,證明了只要滿足兩個條件,xor 加密是無法破解的。

key的長度大於等於message

key必須是一次性的,且每次都要隨機產生

理由很簡單,如果每次的key都是隨機的,那麼產生的ciphertext具有所有可能的值,而且是均勻分布,無法從ciphertext看出message的任何特徵。也就是說,它具有最大的」資訊熵」,因此完全不可能破解。這被稱為 xor 的」完美保密性」(perfect secrecy)。

滿足上面兩個條件的key,叫做 one-time pad(縮寫為otp),意思是」一次性密碼本」,因為以前這樣的key都是印刷成密碼本,每次使用的時候,必須從其中挑選key。

加密101 異或(xor)

異或 xor 是邏輯運算子,符號是 當輸入同時為真或同時為假時,輸出為假。否則,輸出為真。xor可以叫做 可程式設計反向器 乙個輸入bit位決定要不要對另乙個輸入bit位取反。異或 xor 操作的圖示如上,在圖示左邊pi是明文文字 plaintext 的bit位,i是bit位的索引,因為我們要處理不...

異或語法學習

如果a b兩個值不相同,則異或結果為1。如果a b兩個值相同,異或結果為0。0 0 0,1 0 1,0 1 1,1 1 0 同為0,異為1 運用範圍 找列表中只出現一次的數 例子一 找到列表中只出現一次的值 def count once lst res 0for i in lst res i ret...

XOR (異或)加密簡單實現

參考 一 xor 運算 邏輯運算之中,除了 and 和 or,還有一種 xor 運算,中文稱為 異或運算 它的定義是 兩個值相同時,返回false,否則返回true。也就是說,xor可以用來判斷兩個值是否不同。true xortrue false false xo lse false true xo...