使用字母频率分析对没有空格和特殊字符的文本进行替换密码解密

时间:2014-10-24 09:30:10

标签: algorithm machine-learning cryptography statistics artificial-intelligence

我需要找到给定密文的纯文本。我还有给定语言中的字母的统计数据(在Excel文档中),例如我有字母的频率和有向图的频率。

到目前为止,我尝试过这种方法:我在收到的密文中评估了每个字母的频率。然后我按照它们的频率按降序排列字母,并用Excel文档中相应的字母映射每个字母。这种方法的问题在于它给了我一些根本没有意义的文本。那是因为我的文字很小(只有1500个字符)。

我考虑过做一些有限的排列,但我不知道我可以用什么来评估一些排列有多好。我认为一个好的评估函数可以解决我的问题。

请注意,文本中会删除所有特殊字符和空格。也没有数字。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

用于全自动解密

  • 你需要添加一些常用词汇词典
  • 并与之比较
  • 从中找到大多数单词的解决方案可能是正确的

信函概率很少出现问题

  • 它们来源于普通文本
  • 所以如果您的加密文本是例如技术文件而不是文字......
  • 或它包括方程式或表格
  • 然后它可以搞砸你的整体信件出现

所以这样做:

  1. 计算字母的概率
  2. 按概率将字母分组
    • 如此常用(高概率)字母组合在一起(A组)
    • 所以较不常用的(中间概率)字母组合在一起(B组)
    • ,其余(低概率)也组合在一起(C组)
  3. 代替A组
    • 首先查看A组概率是否与您的语言相符
    • 如果没有,则文本使用不同的语言,样式/形式,或者根本不是纯文本
    • 在这种情况下你不能安全地进行
    • 如果匹配则替换A组的字母
    • 第一次运行时应该没问题
  4. 尝试替代B组
    • 所以你知道B组的所有字母(加密/解密)
    • 所以生成替换的所有排列
    • 为每个人尝试解密文本
    • 并在解密后搜索单词(忽略尚未替换的字母)
    • 计算单词计数百分比
    • 并记住最好的(或少数顶级的)
  5. 尝试替代C组
    • 与bullet 4
    • 相同
  6. 修正
    • 很可能在最终结果中会混入很少的字母
    • 所以有办法处理这个
    • 你可以拥有彼此可以混合的字母表
    • 所以你可以尝试对它们进行排列并对你的词典进行测试
    • 或在文字中找到每个单词1-2个错误字母的单词(对于更大的单词,如5个或更多字母)
    • 并且如果找到足够的单词,则排列/更正错误字母的替换
  7. [注释]

    • 您可以从翻译中获取字典
    • 还在线看到了一些纯文本翻译表
    • 这些群体之间应该有明显的概率差异
    • 群组数量可以随语言变化
    • 我使用半自动化方法获得了此任务的最佳结果
    • 步骤5,6可以使用用户输入