我需要找到给定密码文本的明文。我还有一份Excel文档,里面有给定语言中字母的统计数据,例如,我有字母和二合字母的频率统计。
到目前为止,我尝试了这种方法:我评估了接收到的密码文本中每个字母的频率。然后,我按频率降序排列这些字母,并将每个字母与Excel文档中相应的字母进行匹配。这种方法的问题在于,它给出的文本完全没有意义。这是因为我的文本非常短(只有1500个字符)。
我考虑进行一些有限的排列,但我不知道该用什么来评估某个排列的效果。我认为一个好的评估函数可以解决我的问题。
请注意,文本中已删除所有特殊字符和空白。也没有数字。
提前感谢您。
回答:
对于完全自动化解密
- 您需要添加一些常用词的词典
- 并与之进行比较
- 找到最多词的解决方案可能是正确的
使用字母概率会带来一些问题
- 它们是基于常见文本得出的
- 所以如果您的加密文本例如是技术论文而不是文学作品…
- 或者它包含方程式或表格
- 那么它可能会干扰您整体的字母出现频率
所以请按以下步骤操作:
- 计算字母的概率
- 根据概率将字母分组
- 将常用(高概率)的字母分到一组(A组)
- 将较少使用(中概率)的字母分到一组(B组)
- 其余(低概率)的字母也分到一组(C组)
- 替换A组
- 首先查看A组的概率是否与您的语言匹配
- 如果不匹配,那么文本可能使用了不同的语言、风格/形式,或者根本不是明文
- 在这种情况下,您无法安全地继续
- 如果匹配,则替换A组的字母
- 它们在第一次运行时应该没问题
- 尝试替换B组
- 所以您知道B组的所有字母(加密/解密)
- 因此生成所有替换的排列
- 对每一个尝试解密文本
- 并在解密后搜索词(忽略尚未替换的字母)
- 计算词的百分比
- 并记住最佳的一个(或几个顶级的)
- 尝试替换C组
- 与第4点相同
- 修正
- 在最终结果中,可能会有几个字母混淆
- 因此也有处理这种情况的方法
- 您可以有一张字母之间可以混用的表
- 因此您可以尝试排列它们并与您的词典进行测试
- 或者在您的文本中找到每词有1-2个错误字母的词(对于较大的词,如5个或更多字母)
- 如果找到足够多的此类词,则可以排列/修正错误字母的替换
[notes]
- 您可以从翻译者那里获得词典
- 我在线也看到了一些明文翻译表
- 各组之间应有明显的概率差异
- 组的数量可能随语言而变化
- 我在这项任务中使用半自动方法取得了最佳效果
- 步骤5、6可以使用用户输入