Classical-Cipher

在重複密鑰 XOR 密碼中查找密鑰長度

  • June 26, 2013

在一個舊的密碼學常見問題解答中,我發現了以下步驟,用於確定密碼反复異或的密鑰長度:

  1. 通過計算巧合發現密鑰的長度。(見蓋恩斯$$ GAI44 $$, 辛科夫$$ SIN66 $$.)**嘗試密文對自身的每個位移,**計算那些相等的字節。如果兩個密文部分使用了相同的密鑰,則超過 6% 的字節將相等。如果他們使用了不同的密鑰,那麼小於 0.4% 將是相等的(假設隨機 8 位字節的密鑰覆蓋正常的 ASCII 文本)。指示相等鍵的最小位移是重複鍵的長度。

粗體文本的措辭是我感到困惑的部分。鑑於我的明文等於字元串“這是一條秘密消息”,我是否會將前 n 個字節與從第一個偏移的第二組 n 個字節進行比較(例如,xor’d 版本的“Th " 與 “is”,如果我將 2 字節的密碼塊與自身進行比較)?

如果不是,那麼解釋這段經文的正確方法是什麼?謝謝你。

這看起來像是一種計算重合指數的滑動視窗方法。所以你會有類似的東西:

ABCDE FGHIJ KLMNO
OACBD EFGHI JKLMN

給定足夠的密文,您會發現 IC 的長度很高;這是密文的候選密鑰長度,因為您已將兩個文本移動了一個密鑰長度。這種大小的倍數也將返回高 IC。


另一種通過迭代不同長度的密鑰大小、計算該長度的相鄰密文塊的漢明距離、將距離標準化為密鑰長度並將最小值作為密鑰長度來強制 Vigenère 密碼的密鑰長度的另一種方法。在這種情況下,給定密文:

CYPHERCYPHERCYPHERCYPHER

對於 keysize 4 的猜測,您會將文本拆分為

CYPH
ERCY
PHER
CYPH
ERCY
PHER

並以這種方式獲得漢明距離。您將繼續使用更多的鍵大小,最終應該“解決”在 6 上(至少在這個高度人為的範例中)。

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