Xor

如何快速手動異或兩個十六進制數

  • May 24, 2019

我有一個即將舉行的考試,我可以使用一個簡單的計算器。在一些範例問題上,他們要求我們對兩個值進行異或運算(對於 AES 輪密鑰),我知道如何手動將其寫出來,但當然還有其他更快的方法,因為考試是計時的。

如果幸運的話,“簡單計算器”的定義可能包括所有非圖形計算器。在這種情況下,您可以使用 Casio FX-115ES Plus,它包括十六進制和八進制模式,並具有 XOR 運算符。它可以對最多 32 位的八位字節組進行操作。

如果你不是那麼幸運,XOR 表是你最好的朋友。根據您需要執行多少計算,在考試期間在草稿紙上創建一個可能會更快。你甚至可以被允許隨身攜帶一個。

異或表 0

我需要一個 XOR 表來對印刷的密碼書執行快速計算,以便通過公共語音通道進行加密強通信。它還必須在不使用電腦或任何電子設備的情況下快速完成,並且必須放在密文下方空間的 4x6 小紙上。

我想出了幾種方法來壓縮表格並且仍然可以使用。如果您聰明且足智多謀,那麼如何創建壓縮版本的知識可以讓您非常快速地執行許多 XOR 計算。可以利用十六進制 XOR 表的遞歸模式,上面的表用顏色編碼來顯示這種模式,它向下延伸到單個字元。以下是精簡表:

異或表 1

雖然上表佔用的空間較少,但它具有相同數量的字元,因此創建所需的時間大致相同。需要一個簡單的規則來選擇正確的字元。

異或表 2

下一個級別現在佔用上一個空間的一半,以及一半的字元。該規則更複雜,但幾分鐘的練習使其幾乎與使用完整表一樣快。即使規則可以用 XOR 簡化,如果規則選擇的 XOR 為 1,結果將是正確的。

異或表 3

最後一個級別再次是前一個級別的一半空間和一半字元(幾乎),同時需要額外的規則才能完成工作。如果您還記得這張表的遞歸結構和基本佈局,您可以用筆和紙在一分鐘內重新創建它。

從內列標題開始,第一個半字節;0 1 2 3 4 5 6 7

然後加上第2個半字節,也就是第一個半字節+8;8 9 ABCDEF

外列標題是兩半翻轉

的內列標題 內行標題是內列標題的前半部分 外行標題是

外列標題的前半部分

然後用遞歸結構,從內部列標題建構。

創建雙重壓縮表會省略外部標題,但使用完整的行標題。

三聯表上的一個例子:

25 異或 B6

2 XB =

$$ 2a $$X$$ 3b $$(1 2 2) = 9

因為 2 是第一個半字節,B 是第二個半字節,所以我們使用第二個半字節$$ 19 $$

5 X 6 =$$ 5d $$X$$ 6e $$(1 1 1) = 3

因為 5 是第一個半字節,而 6 是第一個,所以我們使用第一個半字節$$ 3b $$

因此 25 XOR B6 = 93

嘗試將十六進制數轉換為二進制數並對每一位執行異或。然後將二進制數轉換回十六進制數。

引用自:https://crypto.stackexchange.com/questions/43200