在探索密码学时,我发现了可汗学院的视频,它激起了我对臭名昭著的凯撒密码缺陷的兴趣。
每当您用英文写长信或电子邮件时,您都会无意中留下指纹;如果你扫描你写的一条消息并计算每个字母的出现频率,你会发现一个相当一致的模式。 “e”很可能是整条消息中最常出现的字母。我从网上随机取了一个寓言来验证这一点,得到的结果正是我所期望的。 “e”确实是最受欢迎的字母。这一事实对于任何足够长的消息都适用。
Al-kindi 发现的缺陷是,当您分析加密消息的频率时,现在重复出现次数最多的是不同的字母。如果您检查该字母与三相比移动了多远,您可以找到该消息所替换的值。例如,如果“h”是加密消息中最常用的字母,则移位可能是三。现在通过反转移位,我们可以轻松获得原始消息。在decoder.py
中,当您向它提供加密文件时,它会解密消息并打印它。我通过将字母移动三个字母来加密同一个寓言,结果发现“h”确实是这里最受欢迎的字母。
要重现我的密码结果并使用其他消息探索它,除了 python 之外,您还必须安装 matplotlib。
pip install matplotlib
执行此操作请记住:解码器根据语言学和统计学原理工作,因此消息越长,结果越准确。
加甘·德瓦吉里 © 麻省理工学院