是否有任何解密算法使用字典来解密加密算法?

时间:2009-05-04 00:18:22

标签: encryption dictionary

好吧,我一直在研究一个分配,它说:

必须开发一个程序,并用C语言编写,以破译写入的文档 意大利语,使用密钥编码。秘密密钥是随机获得的 所有大写字母,小写字母,数字和空格的排列。如 例如,让我们考虑以下两个字符串:

Plain: “ABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvwxyz0123456789 ”
Code:  “BZJ9y0KePWopxYkQlRjhzsaNTFAtM7H6S24fC5mcIgXbnLOq8Uid 3EDv1ruVGw”

密钥仅修改原始文档的字母,数字和空格 其余字符保持不变。该文档存储在一个文本文件中 长度未知。

程序必须读取文档,找到密钥(根据定义,它是 未知;上表只是一个例子,它不是用于准备的关键 网络课程中可用的样本文件)使用合适的解码算法,并写入 将解码后的文档转换为新的文本文件。

而且我知道我必须在程序中上传一本英文字典,但我不知道为什么会这样(可能不是在那个声明中,但我必须这样做)。我的问题是,虽然我可以使用简单的加密/解密算法来完成该程序,那么在我们的程序中上传英语词典的用途是什么?那么有没有使用字典来解密加密算法的解密算法?或者有人可以告诉我应该用什么方法或算法来解决这个问题?

我们将非常感谢您的早期回复(以及真实回复)。

谢谢你们。

3 个答案:

答案 0 :(得分:8)

这是simple substitution cipher。它可以使用frequency analysis打破。维基百科文章彻底解释了这两个概念。你需要做的是:

  • 查找意大利语文本中字符的统计频率。如果你无法在任何地方找到这个,你可以通过分析大量意大利文本来自己构建它。
  • 分析密文中字符的频率,并将其与统计数据相匹配。

第一篇维基百科文章链接到实现上述所有内容的a set of tools。您只需要使用并可能使其适应您的用例。

答案 1 :(得分:1)

您的密码是替换密码。那就是用一个字母代替另一个字母。

考虑密文

“YJR,1drv2ry1od1q1 ...”

我们可以使用字典来查找明文。

查找标点符号,因为空格始终跟在逗号之后,您可以找到空格的替换规则。

给你。 “yjr,drv2ry od q ......”

注意单词长度。由于英语中只有两个1个字母的单词,q可能是i或a。 “yjr”可能是“为什么”,“the”,“how”等。

我们尝试为什么结果

“为什么,dyv2yw od q ...”

没有两个y的英文单词,以w结尾。

所以我们尝试“the”并获得

“the,dev2et od q ......”

我们得出结论认为这是一个可能的答案。

现在我们在字典中搜索看起来像?e ?? et。

的单词

冲洗重复。

也就是说,找到一些符合可用长度的单词,不要破坏彼此的替换规则。

就个人而言,我只是做上面建议的频率分析。

答案 2 :(得分:0)

正如其他受访者所说,频率分析是可行的方法,您可以使用数字和三元组来强化它。只需从网上抓取大量的意大利文字,然后前进!这是非常简单的编程。