Xor
為什麼 XOR 優於 XNOR?
XOR 運算符似乎是許多密碼原語中經常使用的建構塊。據我所知,它最理想的屬性似乎是兩位的 XOR $ a\oplus b=c $ :
- 資訊被保留。任何一個 $ a $ 或者 $ b $ 可以從 $ c $ 還有一點。
- 資訊是隱藏的。對手無法學到任何東西 $ a $ 或者 $ b $ 從 $ c $ 獨自的。
AND 和 OR 都沒有這些屬性,但 XNOR 有。似乎任何使用 XOR 的加密應用程序都可以與 XNOR 等效地建構,而不會導致任何安全性損失。喜歡 XOR 的一個可能原因可能是 XOR 相當於模 2 加法,而 XNOR 是加法加 1 模 2,但這似乎完全是數學運算,我不確定它是否真的會導致任何額外的硬體複雜性在實踐中。
那麼 XOR 的選擇是出於歷史原因而做出的任意選擇,還是有任何切實的潛在動機來使用它而不是 XNOR?
- $ \operatorname{XOR} $ 在處理布爾值時類似於加法;相比之下, $ \operatorname{XNOR} $ 如果我們想使用,它不是一個群律 $ 0 $ 作為中立。
- 擴展經濟:我們可以建立一個 3 輸入 $ \operatorname{XOR} $ 來自兩個 2 輸入;我們不能為 $ \operatorname{XNOR} $ .
- 製造經濟:我們可以建造 $ \operatorname{XOR} $ 具有四個相同的 2 輸入 $ \operatorname{NAND} $ ,但這不能為 $ \operatorname{XNOR} $ . 施工進行:
- $ z\gets(a;\operatorname{NAND};b) $ ;
- $ x\gets (a;\operatorname{NAND};z) $ ;
- $ y\gets(b;\operatorname{NAND};z) $ ;
- $ c\gets (x;\operatorname{NAND};y)=(a;\operatorname{XOR};b) $ .
更新:後面的論點只因為/當 $ \operatorname{NAND} $ 比 $ \operatorname{NOR} $ . 在TTL邏輯中確實如此:該來源顯示 4 個 NPN 晶體管用於 $ \operatorname{NAND} $ ,包括一個有兩個發射器,而 6 個 $ \operatorname{NOR} $ . 由 PNP 晶體管製成的RTL邏輯也是如此,當這些晶體管使用鍺製成時,它曾經很流行。然而,使用 NPN 晶體管(通常在矽集成電路上)的 RTL 邏輯有利於 $ \operatorname{NOR} $ , 也存在過。眾所周知,Appolo 導航電腦是由 3 輸入建構的 $ \operatorname{NOR} $ 門,每個 IC 兩個。
- 否定更難推理。
- XNOR 為 XOR 添加了否定,這是要考慮的又一步。
- XNOR 沒有與 NAND 和 NOR 一樣的優勢。硬體 NAND 和 NOR 是晶體管邏輯回歸 RTL 的自然結果。
- 硬體通常不實現 XNOR。(謝謝mb)
鑑於上述情況,XNOR 似乎沒有任何論據。
多晶體管 RTL 或非門