我已经编写(正在编写)一个程序来分析加密文本,并尝试使用频率分析来分析和破解它。
加密文本采用每个字母替换其他字母的形式,即。 a->m、b->z、c->t 等。所有空格和非字母字符均被删除,大写字母变为小写。
一个例子是:
原始输入 - 这是样本消息仅包含小写字母
加密输出 - ziololqlqdhstdtllqutozgfsnegfzqoflsgvtkeqltstzztkl
尝试破解 - omiieeaeanuhtnteeawtiorshylrsoaisehrctdlaethtootde
这里它只正确地得到了 I、A 和 Y。
目前,我的程序通过分析每个单独字符的频率并将其映射到非加密文本中出现在相同频率等级的字符来破解它。
我正在寻找提高程序准确性的方法和途径,因为目前我没有得到太多正确的字符。例如,当尝试破解《傲慢与偏见》中的 X 个角色时,我得到:
1600 - 10 个字母正确
800 - 7 个字母正确
400 - 2 个字母正确
200 - 3 个字母正确
100 - 3 个字母正确。
我使用罗密欧与朱丽叶作为基础来获取频率数据。
有人建议我查看和使用字符对的频率,但我不确定如何使用它,因为除非我使用非常大的加密文本,否则我可以想象与我处理单个字符的方式类似的方法甚至是更不准确,导致的错误多于成功。我还希望使我的加密破解器对于较短的“输入”更加准确。
我不确定这个问题有多大的限制,即你做出的决定中有多少是你需要改变的,但这里有一些评论:
1)频率映射不足以解决这样的难题,许多频率彼此非常接近,如果您没有使用相同的文本作为频率源和明文,那么几乎肯定会出现一些字母缺失文字有多长。不同的材料会有不同的使用方式。
2)如果可以的话,不要去掉空格。这将允许您通过检查您有权访问的字典中是否存在一定比例的单词来验证您的潜在解决方案。
3)如果你真的想深入了解自然语言处理,请研究一下自然语言处理。这本书 https://rads.stackoverflow.com/amzn/click/com/0131873210有你想知道的一切。
Edit:我会首先研究双字母和三字母。如果您对一两个字母相当有信心,它们可以帮助预测后续字母的可能候选者。它们基本上是概率表,其中 AB 是 A 后面跟着 B 的概率。因此,假设您已经解决了给定的字母,则可以使用它来解决它旁边的字母,而不仅仅是猜测。例如,如果您有单词“y_u”,那么对您来说很明显该单词是您,但对计算机而言却不然。如果你还剩下字母 N、C 和 O,二合字母会告诉你 YN 和 YC 非常不常见,而 YO 的可能性更大,所以即使你的文本有不寻常的字母频率(当文本很短时,这很容易) )你仍然有一个相当准确的系统来解决未知数。您可以寻找已编译的数据集,或者进行自己的分析,但请确保使用大量不同的文本,很多莎士比亚作品与一半莎士比亚和一半期刊文章不同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)