加密的文本采用每个字母的形式代替一些其他字母,即. a-> m,b→z,c→t等等,所有空格和非阿尔法字符都被删除,大写字母小写.
一个例子是:
Orginal input – thisisasamplemessageitonlycontainslowercaseletters
Encrypted output – ziololqlqdhstdtllqutozgfsnegfzqoflsgvtkeqltstzztkl
Attempt at cracking – omieieaeanuhtnteeawtiorshylrsoaisehrctdlaethtootde
这里只有我,A和Y正确.
目前,我的程序通过分析每个字符的频率来解决它,并将其映射到在非加密文本中以相同频率排列出现的字符.
我正在寻找方法和方法来提高我的程序的准确性,因为我没有得到太多的字符正确.例如,当尝试从“傲慢与偏见”中破解X个字符时,我得到:
1600 – 10 letters correct
800 – 7 letters correct
400 – 2 letters correct
200 – 3 letters correct
100 – 3 letters correct.
我使用罗密欧与朱丽叶作为获取频率数据的基础.
有人建议我看看和使用字符对的频率,但我不确定如何使用,因为除非我使用非常大的加密文本,我可以想像一个类似的方法,我如何做单个字符将是甚至更不准确,造成比成功更多的错误.我也希望使我的加密破解更准确的更短的“投入”.
任何建议将是非常有帮助的.
谢谢.
解决方法
1)频率映射不足以解决这样的难题,许多频率彼此非常接近,如果您不使用相同的文本进行频率源和明文,几乎可以保证有几封信,无论如何文字多久不同的材料将具有不同的使用模式.
2)如果可以帮助,不要剥离空间.这将允许您通过检查您有权访问的字典中存在一定百分比的字词来验证您的潜在解决方案.
3)如果你真的想进入这个语言的一面,那么看自然语言处理. This book有你想知道的一切.
编辑:我会先看看bigraphs和trigraphs.如果你对一封或两封信信心十足,他们可以帮助预测可能的候选人.它们基本上是概率表,其中AB将是A后面跟着B的概率.所以假设你有一个给定的信来解决,这可以用来解决它旁边的字母,而不是只是猜测.例如,如果你有这个词“y_u”,那么你可以明白这个词是你,而不是电脑.如果你有N,C和O的字母,那么你会发现YN和YC是非常不寻常的,因为YO是更有可能的,所以即使你的文本有不寻常的字母频率(这在很短的时候很简单) )你仍然有一个相当准确的系统来解决未知数.你可以搜索一个编译的数据集,或者做自己的分析,但是请确保使用很多不同的文本,很多莎士比亚与莎士比亚一半和半期杂志文章不一样.