gpt4 book ai didi

c++ - 如何以编程方式改进破解替换密码?

转载 作者:可可西里 更新时间:2023-11-01 15:51:42 27 4
gpt4 key购买 nike

我已经编写(正在编写)一个程序来分析加密文本并尝试使用频率分析来分析和破解它。

加密文本采用每个字母替换其他字母的形式,即。 a->m、b->z、c->t 等。所有空格和非字母字符都被删除,大写字母变为小写。

一个例子是:

Orginal input - thisisasamplemessageitonlycontainslowercaseletters
Encrypted output - ziololqlqdhstdtllqutozgfsnegfzqoflsgvtkeqltstzztkl
Attempt at cracking - omieieaeanuhtnteeawtiorshylrsoaisehrctdlaethtootde

这里只有 I、A 和 Y 正确。

目前我的程序通过分析每个单独字符的频率并将其映射到非加密文本中出现在相同频率等级的字符来破解它。

我正在寻找提高程序准确性的方法和方式,因为目前我没有正确识别太多字符。例如,当我尝试破解《傲慢与偏见》中的 X 个字符时,我得到:

1600 - 10 letters correct
800 - 7 letters correct
400 - 2 letters correct
200 - 3 letters correct
100 - 3 letters correct.

我正在使用罗密欧与朱丽叶作为获取频率数据的基础。

有人建议我查看和使用字符对的频率,但我不确定如何使用它,因为除非我使用非常大的加密文本,否则我可以想象一种与我处理单个字符的方式类似的方法会更不准确,导致的错误多于成功。我还希望让我的加密破解器对于较短的“输入”更加准确。

最佳答案

我不确定这个问题的局限性如何,即您做出的决定中有多少是您需要更改的,但这里有一些评论:

1) 频率映射不足以解决这样的难题,许多频率彼此非常接近,如果您没有对频率源和明文使用相同的文本,您几乎可以保证有几个字母关闭不管文本多长。不同的 Material 会有不同的使用模式。

2) 如果可以的话,不要去掉空格。这将允许您通过检查您有权访问的字典中是否存在一定百分比的单词来验证您的潜在解决方案。

3) 如果您真的想了解语言方面的知识,请研究自然语言处理。 This book拥有您可能想知道的一切。

编辑:我会先研究双字母和三字母。如果您对一两个字母相当有信心,它们可以帮助预测后面字母的可能候选者。它们基本上是概率表,其中 AB 是 A 后面跟着 B 的概率。所以假设你已经解决了给定的字母,它可以用来解决它旁边的字母,而不仅仅是猜测。例如,如果你有“y_u”这个词,你很明显这个词就是你,但对计算机来说却不是。如果你剩下字母 N、C 和 O,双字母会告诉你 YN 和 YC 非常不常见,因为 YO 更有可能,所以即使你的文本有不寻常的字母频率(当它很短时这很容易) 你仍然有一个相当准确的系统来解决未知数。您可以四处寻找经过编译的数据集,或进行自己的分析,但请确保使用大量不同的文本,很多莎士比亚作品与一半莎士比亚作品和一半期刊文章是不一样的。

关于c++ - 如何以编程方式改进破解替换密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291110/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com