【问题标题】:Substitution cipher decryption using letter frequency analysis for text without blanks and special characters使用字母频率分析的替换密码解密对没有空格和特殊字符的文本
【发布时间】:2014-12-20 03:11:11
【问题描述】:
我需要找到给定密文的纯文本。我还有给定语言的字母的统计信息(在 Excel 文档中),例如我有字母和有向图的频率。
到目前为止,我尝试了这种方法:我评估了收到的密文中每个字母的频率。然后我按字母的频率降序对字母进行排序,并将每个字母与 Excel 文档中的相应字母进行映射。这种方法的问题在于它给了我一些根本没有意义的文本。那是因为我的文字很小(只有 1500 个字符长)。
我考虑过做一些有限的排列,但我不知道我可以用什么来评估一些排列的好坏。我认为一个好的评估函数可以解决我的问题。
请注意,所有特殊字符和空格都会从文本中删除。也没有数字。
提前谢谢你。
【问题讨论】:
标签:
algorithm
machine-learning
cryptography
statistics
artificial-intelligence
【解决方案1】:
全自动解密
- 您需要添加一些常用词词典
- 并与之比较
- 从中找到最多单词的解决方案可能是正确的解决方案
字母概率很少出现问题
- 它们是为普通文本派生的
- 所以如果您的加密文本是技术论文而不是 beletry ...
- 或者它包括方程式或表格
- 然后它会搞砸你的整体字母出现
这样做:
- 计算字母的概率
- 按概率将字母分组
- 所以常用(高概率)的字母被归为一组(A 组)
- 因此不太常用的(中等概率)字母被归为一组(B 组)
- 其余的(低概率)也归为一组(C 组)
- 替代组A
- 首先查看 A 组的概率是否与您的语言匹配
- 如果不是,那么文本是不同的语言、样式/形式,或者根本不是纯文本
- 在这种情况下,您将无法安全进行
- 如果匹配,则替换 A 组中的字母
- 第一次运行应该没问题
- 尝试替换B组
- 所以你知道 B 组的所有字母(加密/解密)
- 因此生成所有替换排列
- 每个人都尝试破译文本
- 并在解密后搜索单词(忽略尚未替换的字母)
- 计算字数百分比
- 并记住最好的一个(或几个顶级的)
- 尝试替代C组
- 更正
- 很可能在最终结果中会有几个字母混合在一起
- 所以也有办法处理这个问题
- 您可以拥有可相互混合的字母表
- 因此您可以尝试排列它们并根据您的字典进行测试
- 或在您的文本中查找每个单词有 1-2 个错误字母的单词(对于较大的单词,例如 5 个或更多字母)
- 如果找到足够多的此类单词,则排列/正确替换错误的字母
[注释]
- 您可以向翻译人员索取词典
- 还在网上看到了一些纯文本翻译表
- 各组之间应该有明显的概率差异
- 组数可以随语言变化
- 我使用半自动化方法完成了这项任务的最佳结果
- 步骤 5,6 可以使用用户输入