在探索密碼學時,我發現了可汗學院的視頻,它激起了我對臭名昭著的凱撒密碼缺陷的興趣。
每當您用英文寫長信或電子郵件時,您都會無意中留下指紋;如果你掃描你寫的一條訊息併計算每個字母的出現頻率,你會發現一個相當一致的模式。 「e」很可能是整個訊息中最常出現的字母。我從網路上隨機取了一個寓言來驗證這一點,得到的結果正是我所期望的。 「e」確實是最受歡迎的字母。這一事實對於任何足夠長的消息都適用。
Al-kindi 發現的缺陷是,當您分析加密訊息的頻率時,現在重複出現次數最多的是不同的字母。如果您檢查該字母與三相比移動了多遠,您可以找到該訊息所替換的值。例如,如果“h”是加密訊息中最常用的字母,則移位可能是三。現在透過反轉移位,我們可以輕鬆獲得原始訊息。在decoder.py
中,當您向它提供加密檔案時,它會解密訊息並列印它。我透過將字母移動三個字母來加密同一個寓言,結果發現「h」確實是這裡最受歡迎的字母。
要重現我的密碼結果並使用其他訊息探索它,除了 python 之外,您還必須安裝 matplotlib。
pip install matplotlib
執行此操作請記住:解碼器根據語言學和統計學原理工作,因此訊息越長,結果越準確。
加甘·德瓦吉里 © 麻省理工學院