【问题标题】:Identifying a substitution cipher random key. (English text)识别替换密码随机密钥。 (英文文本)
【发布时间】:2011-12-23 20:57:24
【问题描述】:

输入: 使用随机生成的替换密码加密英语普通文本 (A-Z)。

输出: 关键

想法: 读取整个文本,将每个字符/二元/三元的频率存储在一些数组中,并将它们与以下内容进行比较:
http://en.wikipedia.org/wiki/Letter_frequencies
http://en.wikipedia.org/wiki/Bigram
http://en.wikipedia.org/wiki/Trigram

缺点:字母/二元组/三元组的百分比接近(如“c”和“u”)

我的软件应该能够猜出最大值。加密文本中的可能字符(最少 2000 个字符)。
我必须猜至少 18-20 个字母。

问题:
有没有一种方法/已知算法来猜测所有字符 => 全键?
或者你能给我一些有用的参考或建议,告诉我如何改进整个猜测过程?

【问题讨论】:

    标签: cryptography encryption


    【解决方案1】:

    我认为你在正确的轨道上。恢复完整密钥的唯一方法是所有字符(或全 1)都存在于纯文本中。

    我会按照进行一些统计猜测的思路进行思考,然后静态检查结果的明文 Bigrams/Trigrams 的结果。或者根据单词列表检查整个单词(如果您知道单词边界在哪里)。

    【讨论】:

    • 那是个问题..我只有从 A 到 Z 没有空格的字母.. 1 个单词的最后一个字母 + 下一个单词的第一个字母将在我的统计中形成一个 digram.. 我是想知道在*上找到的频率是否适合我。
    • 只要是 26 个字符的密钥,您要查找的文本中包含 26 个字符就可以了。我的观点是,如果纯文本不包含字母 Q、X 和 Z,例如,您将无法确定这些字符的替换。不知道单词边界可能会搞砸二元图统计。