Cryptanalysis

Playfair 密碼的密碼分析是如何工作的?

  • August 2, 2021

我有一組 Playfair 加密的數據,我試圖在沒有密鑰的情況下破解它們。我知道我需要分析二元組;我目前已經計算出解密為therin和的內容he,並弄清楚了網格中的位置th和位置。he然而,現在我被難住了。

我查看了“Polygraphic Substitution Systems 解決方案”欄位手冊,但沒有幫助。如何完成對 Playfair 的密碼分析,解密了幾個 bigrams 並知道其中兩個在網格中的位置?

有幾種可用的算法可以攻擊 Playfair 密碼。

爬山可能是一種選擇。基本上它從一個隨機密鑰開始(假設它是最好的)並解密密碼。使用適應度函式對生成的明文進行評分。然後將小的更改應用於密鑰,如果修改後的密鑰的結果明文得分更高,則將修改後的密鑰視為最佳密鑰,重新開始對密鑰應用微小更改的過程,直到找不到更好的密鑰.

有時爬山算法找不到最佳解決方案,算法會卡在局部最大值。解決此問題的一種有效方法是使用 Shotgun 爬山(請參閱上面提供的 Wikipedia 連結)。

模擬退火算法是另一種選擇,另請參見此處

或者您可以使用遺傳算法。該算法模仿自然選擇的過程。

如果您對線上 Playfair 破壞者感興趣。我認為這裡使用了爬山算法。它是用 Javascript 編碼的,因此可以研究原始碼。

如果您對如何對明文進行評分感興趣: Quadgram Statistics as a Fitness Measure

這並不優雅,但蠻力方法是編寫一個程序,創建一個 25x25 有向圖的表(假設 i=j),產生 625 行。我還將添加一個列,列出每個有向圖的相對頻率(給定足夠的密文,您可以使用它來辨識頻繁的替換,正如您已經完成的那樣)。你從 625 開始!可能的解決方案,但在辨識出 n 個有向圖後,它會下降到 (625-n)!但是,如果語言中最長的單詞是 N 個有向圖,那麼取一個 2N 的部分並對其進行解碼(最好使用已經解碼了一些有向圖的部分)。我在想整體的複雜性變成了選擇類似的東西 $ \frac{(625-n)!}{(625-2N-n)!} $

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