我写过(正在编写)一个程序来分析加密文本并尝试使用频率分析来分析和破解它。
加密文本采用每个字母替换其他字母的形式,即。 a-> m,b-> z,c-> t等等。除去所有空格和非alpha字符,并将大写字母制成小写字母。
一个例子是:
原始输入 - 这个例子只是包含了小数据库 加密输出 - ziololqlqdhstdtllqutozgfsnegfzqoflsgvtkeqltstzztkl
尝试破解 - omieieaeanuhtnteeawtiorshylrsoaisehrctdlaethtootde
这里只有正确的I,A和Y.
目前我的程序通过分析每个字符的频率并将其映射到非加密文本中出现在相同频率等级中的字符来破解它。
我正在寻找提高程序准确性的方法和方法,因为我没有太多正确的字符。例如,当试图从Pride和Prejudice中破解X个字符时,我得到:
1600 - 10个字母正确
800 - 7个字母正确
400 - 2个字母正确
200 - 3个字母正确
100 - 3个字母正确。
我使用罗密欧与朱丽叶作为获取频率数据的基础。
有人建议我查看并使用字符对的频率,但我不确定如何使用它,因为除非我使用非常大的加密文本,否则我可以想象一种类似于我如何做单字符的方法将会更加不准确并导致更多错误而不是成功。我希望也能让我的加密破解者更准确地用于更短的“输入”。
答案 0 :(得分:2)
观察角色对对我来说很有意义。
字母表中的每个字母都可以在有效文本中使用,但有很多对非常不可能或永远不会发生。
例如,没有办法使用有效的英语单词来获取qq,因为每个q必须后跟一个u。如果在加密文本中重复使用相同的字母,则可以自动排除它们代表q的可能性。
从输入中删除空格这一事实限制了实用程序,因为单个单词中永远不存在的组合例如如果h结束一个单词并且t开始另一个单词,则现在可以发生。尽管如此,我怀疑这些额外的数据点将使您能够解析更短的文本字符串。
另外,如果你打算分析这段时期的着作,我建议罗密欧与朱丽叶只是统计数据的良好基础。拼写和单词使用方面有一些实质性的变化可能会使统计数据出现偏差。
答案 1 :(得分:2)
首先,罗密欧与朱丽叶可能不是一个很好的基础。第二,是的有向图是有用的(三元组也是如此)。对于像你一样的替代密码,一个好的起点是威廉弗里德曼的Military Cryptanalysis书。
答案 2 :(得分:2)
好吧,我在我的时间里已经解决了一些简单的替换密码,所以我可以畅所欲言。 从输入字符串中删除空格几乎不可能解决。
虽然大多数英语句子确实具有更高频率的“e”,但并非完全符合该过程。
使活动变得有趣的部分是一系列试验假设/检验假设/接受或拒绝假设,使整个事物成为一个迭代过程。
许多句子包含'of'和'the'字样。通过查看你的句子,并假设两个字母单词中的一个是,意味着进一步的替换,可以让你对其他单词做出推断。简而言之,您需要一个高频词典,以便您进行进一步的推断。
由于可能存在大量的回溯,因此将prolog或erlang实现视为开发c ++实现的基础可能是明智的。
祝你好运。 完成后请分享您的结果。
答案 3 :(得分:2)
我不确定这个问题有多么受限制,即你做出的决定有多少是你的改变,但这里有一些评论:
1)频率映射不足以解决这样的谜题,许多频率彼此非常接近,如果你没有使用相同的文字作为频率源和明文,你几乎可以保证有几个字母无论文本有多长。不同的材料会有不同的使用模式。
2)如果你能提供帮助,请不要剥离空间。这将允许您通过检查您有权访问的字典中存在的某些百分比单词来验证您的潜在解决方案。
3)如果你真的想进入语言方面,请研究自然语言处理。 This book有你想知道的一切。
修改强> 我先看看bigraphs和trigraphs。如果您对一两个字母相当自信,他们可以帮助预测随后的字母的可能候选人。它们基本上是概率表,其中AB是A跟随B的概率。因此,假设您已经解决了给定的字母,可以用它来解决它旁边的字母,而不仅仅是猜测。例如,如果您有“y_u”这个词,那么很明显,这个词就是你,而不是计算机。如果你有N,C和O字母,bigraphs会告诉你YN和YC非常罕见,因为YO更有可能,所以即使你的文字有不寻常的字母频率(这很简单,当它很短)你仍然有一个相当准确的系统来解决未知数。你可以寻找一个已编译的数据集,或进行自己的分析,但要确保使用大量不同的文本,很多莎士比亚与莎士比亚和半期刊文章的一半不一样。
答案 4 :(得分:2)
单字母单词是一个很大的提示(通常只有“A”和“I”,很少“O”。休闲语言允许“K”)。还有一组有限的两个和三个字母单词。如果空间被剥离,没有帮助。
对比你想象的更具诊断性。例如:some letters never appear doubled in English(虽然如果空格被剥离或者允许使用外国词汇,这不是绝对的),而其他是常见的双重;也有一些异类对非常频繁。
作为一般规则,没有人能够提供确定性。您需要为每个密码字母分配一组可能的翻译以及相关的概率。并结合几个测试,直到概率变得非常显着。
您可以通过查看Shannon Entropy来确定您何时离开。
答案 5 :(得分:2)
不是一个完整的答案,但可能是一个有用的指针:您可以使用字典来确定您的明文候选者有多好。在安装了aspell的UNIX系统上,您可以使用命令
提取英语单词列表aspell -l en dump master
答案 6 :(得分:1)
您可以尝试查看成对而不是单个字母。例如,t通常后跟英语h,就像s一样。马尔可夫模型在这里很有用。
答案 7 :(得分:1)
频次分析
频率分析是一个很好的起点。然而,罗密欧与朱丽叶并不是一个非常好的选择,可以将字符频率从解读“傲慢与偏见”文本中解读出来。我建议使用来自this page的频率,因为它使用了7种不同的文本,这些文本在年龄上与“傲慢与偏见”更接近。它还列出了有向图和三字符的概率。然而,当从文本中删除空格时,有向图和三字符可能不那么有用,因为这会引入由字捣碎在一起创建的有向图和三字符的噪声。
字符频率的另一个资源是this site。它声称使用“不同文学体裁的良好组合。”
如您所见,随着加密文本长度的增加,频率分析通常会更具概率正确性。频率分析也只有助于建议正确的方向。例如,具有最高频率的加密字符可以是e,但是它也可以是具有高频率的a。一种常见的方法是从给定语言中的一些最高频率字母开始,尝试在文本中将这些字母与不同的高频字母匹配,并查看它们是否形成常见字,例如,as,is,as,等等。然后你去那里。
好的入门书
如果您正在寻找一位关于密码学的优秀门外汉介绍,您可以尝试Simon Singh的The Code Book。它非常易读且有趣。这些书着眼于整个历史中代码和代码破解的发展。他很早就涵盖了替代密码,并描述了一些打破它们的常用方法。此外,他在书中已经有一个密码挑战(已经完成),其中包含一些不同的代码,试图打破包括一些替代密码。您可以尝试阅读瑞典团队如何在this site打破这些密码。但是,在阅读这些解决方案之前,我可能会建议至少通过本书的替换密码部分进行阅读。
顺便说一下,我对本书的出版没有任何影响。我真的很喜欢它。
答案 8 :(得分:1)
关于有向图,双向图和单词近似,John Pierce(晶体管和PCM的共同发明者)写了一本优秀的书Introduction to Information Theory,其中包含对计算其特征的扩展分析,为什么你想要和如何找到它们。我发现自己编写频率分析解密代码很有帮助。
此外,您可能希望编写一个遍历源来为您的系统提供信息,而不是依靠单一来源(例如,小说)。
答案 9 :(得分:0)
有趣的问题,我问了一个类似的问题:)
我想要找到并做的一件事是: 扫描其中包含重复字母的较大单词。
然后找到一个与密码中较大单词具有相似模式的相应单词。
原因仅仅是因为,最大可能的不同解密字母同时发现的单词越大,因为更大的单词更容易解码,就像更大的文本更容易解码的原因相同。看到模式出现的机会:)