凯撒密码解密算法

oopDesigner 2009-10-04 09:41:03
如何知道解出的就是所要的明文呢?是不是要弄个字典什么的?
最好有源码,谢谢!
...全文
1982 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
minghuang2 2010-03-29
  • 打赏
  • 举报
回复
如果人家在计算机上移120位呢。。?不知道移出了ASCII表会不会有影响
theone11 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 oopdesigner 的回复:]

我用了穷举,被批...
[/Quote]
……那你做英语阅读题的时候没有看过那篇"跳舞的小人"么?

用暴力破解这种无技术含量的东西被批是很正常的,当然你也可以说要用编程/算法来破解这种古典加密法纯粹蛋疼,学校就喜欢整这些不实用的.
jackyjkchen 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 oopdesigner 的回复:]
引用 13 楼 jackyjkchen 的回复:
引用 12 楼 oopdesigner 的回复:
引用 11 楼 theone11 的回复:
似乎没有几个回帖的人明白了楼主的意思,当然,楼主的问题也很含糊.

对于正常的情况而言,加密的一方把密钥给解密的那一方,这样就能够确保解密出来的是明文了.

而对于暴力破解来说,那无非是把26种情况全部试一次,然后逐个看哪个明文是有意义的.基本上只能人工去做,除非你已经事先知道了明文中的关键字.

使这个意思,只是我希望暴力破解能更智能些

26次的穷举你还想更智能些!天哪,难道是因为我学的是信息安全,看惯了现代对称密码的那些m的n次方已经麻木了么………………


我用了穷举,被批...
[/Quote]

那就只能通过频率分析+穷举了

方法如下,看频率最高的字母E对应密文的哪个字母,算出移位长度,用这个密钥尝试解密
如果不对,找密文里频率第二高的与E的移位长度,再试
……
应该可以更快的试出密钥
oopDesigner 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jackyjkchen 的回复:]
引用 12 楼 oopdesigner 的回复:
引用 11 楼 theone11 的回复:
似乎没有几个回帖的人明白了楼主的意思,当然,楼主的问题也很含糊.

对于正常的情况而言,加密的一方把密钥给解密的那一方,这样就能够确保解密出来的是明文了.

而对于暴力破解来说,那无非是把26种情况全部试一次,然后逐个看哪个明文是有意义的.基本上只能人工去做,除非你已经事先知道了明文中的关键字.

使这个意思,只是我希望暴力破解能更智能些

26次的穷举你还想更智能些!天哪,难道是因为我学的是信息安全,看惯了现代对称密码的那些m的n次方已经麻木了么………………
[/Quote]

我用了穷举,被批...
Zusammenhang 2009-10-06
  • 打赏
  • 举报
回复
通过频率分析。当密文长度足够大的情况下,可以先分析密文中每个字母出现的频率,然后将这一频率与正常情况下的该语言字母表中所有字母的出现频率做比较。例如在英语中,正常明文中字母E和T出现的频率特别高,而字母Q和Z出现的频率特别低,而在法语中出现频率最高的字母是E,最低的是K和W。可以通过这一特点,分析密文字母出现的频率,可以估计出正确的偏移量。此外,有时还可以将频率分析从字母推广到单词,例如英语中,出现频率最高的单词是[7]:the, of, and, a, to, in...。我们可以通过将最常见的单词的所有可能的25组密文,编组成字典,进行分析。比如QEB可能是the,MPQY可能是单词know(当然也可能是aden)。但是频率分析也有其局限性,它对于较短或故意省略元音字母或者其他缩写方式写成的明文加密出来的密文进行解密并不适用。

--维基百科
jackyjkchen 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 oopdesigner 的回复:]
引用 11 楼 theone11 的回复:
似乎没有几个回帖的人明白了楼主的意思,当然,楼主的问题也很含糊.

对于正常的情况而言,加密的一方把密钥给解密的那一方,这样就能够确保解密出来的是明文了.

而对于暴力破解来说,那无非是把26种情况全部试一次,然后逐个看哪个明文是有意义的.基本上只能人工去做,除非你已经事先知道了明文中的关键字.

使这个意思,只是我希望暴力破解能更智能些
[/Quote]
26次的穷举你还想更智能些!天哪,难道是因为我学的是信息安全,看惯了现代对称密码的那些m的n次方已经麻木了么………………
oopDesigner 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 theone11 的回复:]
似乎没有几个回帖的人明白了楼主的意思,当然,楼主的问题也很含糊.

对于正常的情况而言,加密的一方把密钥给解密的那一方,这样就能够确保解密出来的是明文了.

而对于暴力破解来说,那无非是把26种情况全部试一次,然后逐个看哪个明文是有意义的.基本上只能人工去做,除非你已经事先知道了明文中的关键字.
[/Quote]
使这个意思,只是我希望暴力破解能更智能些
theone11 2009-10-06
  • 打赏
  • 举报
回复
似乎没有几个回帖的人明白了楼主的意思,当然,楼主的问题也很含糊.

对于正常的情况而言,加密的一方把密钥给解密的那一方,这样就能够确保解密出来的是明文了.

而对于暴力破解来说,那无非是把26种情况全部试一次,然后逐个看哪个明文是有意义的.基本上只能人工去做,除非你已经事先知道了明文中的关键字.
Moonwalkings 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 oopdesigner 的回复:]
引用 5 楼 moonwalkings 的回复:
凯撒加密只是把每个字母移位,加解密方法如下:
明文字母为X,密文字母为Y
加密:Y = X + n(mod26)
解密:X = Y  - n(mod26)
其中n表示密钥。显然,n的有效值为0到25.如果n = 0,那么相当于没有对明文惊醒加密操作。

比如n=2
加密前:b
加密后:d
解密d,怎么知道b这才是要的明文,若试到n=1,解密为:c,如何知道它不是要的明文呢?
[/Quote]
要双方协商密钥,否则收信人只有把26个密钥全部是一遍
liushuiyou_sheng 2009-10-05
  • 打赏
  • 举报
回复
关注
Moonwalkings 2009-10-05
  • 打赏
  • 举报
回复
凯撒加密只是把每个字母移位,加解密方法如下:
明文字母为X,密文字母为Y
加密:Y = X + n(mod26)
解密:X = Y - n(mod26)
其中n表示密钥。显然,n的有效值为0到25.如果n = 0,那么相当于没有对明文惊醒加密操作。
oopDesigner 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 freezezdj 的回复:]
你是自己加密,然后自己解。
还是要解别人加的密。


[/Quote]
当然是解别人加的密
冻结 2009-10-05
  • 打赏
  • 举报
回复
你是自己加密,然后自己解。
还是要解别人加的密。

oopDesigner 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 moonwalkings 的回复:]
凯撒加密只是把每个字母移位,加解密方法如下:
明文字母为X,密文字母为Y
加密:Y = X + n(mod26)
解密:X = Y  - n(mod26)
其中n表示密钥。显然,n的有效值为0到25.如果n = 0,那么相当于没有对明文惊醒加密操作。
[/Quote]
比如n=2
加密前:b
加密后:d
解密d,怎么知道b这才是要的明文,若试到n=1,解密为:c,如何知道它不是要的明文呢?
jackyjkchen 2009-10-04
  • 打赏
  • 举报
回复
凯撒密码只有移位,字符频率分析必杀,而且穷举也只要26次
zentropy 2009-10-04
  • 打赏
  • 举报
回复
印象中凯撒密码只是做移位吧
如果是的话计算机枚举所有可能也只有26,再人眼看一下吧-_-
na2650945 2009-10-04
  • 打赏
  • 举报
回复
学习。
等待高手。
我感觉是否通过字母的频率来确定呢。
我看过本书上讲。
简单的破解可以通过这样加穷举来尝试。
omegabomb 2009-10-04
  • 打赏
  • 举报
回复
大胆猜想一下,把破解出来的字符串拆分之后和字典内的单词比对。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧