凯撒密码和栅栏密码 - 密码学01
凯撒密码和栅栏密码
让编程改变世界
Change the world by program
我们将会学到什么?!
这相信是大家广泛关注的话题,因为如果一开始给大家一个强大而震撼的目录,然后就是一屁股的填鸭式教学主义,相信大家就相当郁闷了! 咱这里没有目录,重视教学过程和质量,大家在学习中觉得有什么建议可以更好促进学习,不妨在论坛提一提,别憋着哦!亲~ 那个我们这个系列会讲解的内容主要包括从古到今,从奥特曼到小怪兽,基本所有有名的算法我们会讲解,原理我们会讲解,作者我们也会介绍,毕竟,死也要让人家死得有个名份!密码学基础
如果网络没有密码,那就会有以下情况发生: [caption id="attachment_482" align="aligncenter" width="300"]![密码学基础](http://blog.fishc.com/wp-content/uploads/2012/08/9_120528022657_1-300x135.jpg)
![密码学基础](http://blog.fishc.com/wp-content/uploads/2012/08/9_120528022713_1-300x157.jpg)
密码的模型
克劳德.香农(1916 ~ 2001)
20世界在英国干过数学家 1948年,发表了论文《通信的数学理论》,被誉为信息理论之父 刚刚图片中的加密模式就是香农兄提出的! 基本词汇扫盲 明文P(Plain text):指没有经过加密的普通文本 密文C(Cipher text):指加密后的文本 加密(Encryption/Encipherment):将明文转化为密文的过程 解密(Decryption/Decipherment):将密文还原为明文的过程 加密钥匙Ek(Encryption Key):加密时使用的钥匙(配合加密算法的数据) 解密钥匙Dk(Decryption Key):解密时使用的钥匙(配合解密算法的数据) 先来一个小小的热身:请将下列密文转换为明文KNQXGHKUJE
根据观察到的特征,大家可以猜出加密钥匙和原文麽? 很好,大家稍作尝试后,应该不难发觉明文是按照英文字母表的顺序每个字母向后移动两位得出密文的。 那么,在这里加密钥匙就是+2,要求出明文只需要每个字母依次-2:ILOVEFISHC凯撒密码
凯撒:
除了是一个男人之外,他还是古罗马时期伟大的军事家和政治家。高卢战争的时候,他发明了这个密码,使得可以在敌人无法理解的情况下与联军进行联络。凯撒密码:
正如刚才我们例子中的,将明文中的各个字符按顺序进行 n 个字符错位转换的加密方法我们称为凯撒密码。 优点:实现了最简单的加密方案,容易理解 缺点:对于有一点点密码学功底的朋友来说,安全强度几乎为零,有点弱不禁风。密码的安全强度:
刚才我们提到了安全强度这个概念,小甲鱼顺道给大家介绍下。 例如凯撒密码,加密钥匙充其量也只有24个,也就是说,不管移动多少字符,最多只需要进行24次猜解即可破译出来! 知识普及:古代罗马字母只有25个哦 ^_^栅栏密码
尽管名字看上去挺酷,不过很遗憾让大家失望了,栅栏密码也是很脆弱的。 所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第一个字母连起来,形成一段无规律的密文。 注意,栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话) 这是一个栗子:将 ILOVEFISHC 栅栏加密。ILOVEFISHC
我们分为两个字母一组IL OV EF IS HC
取出第一个字母IOEIH
取出第二个字母LVFSC
结合: IOEIHLVFSC(密文)复合加密
我们刚刚所讲解的是两种比较简单的古典密码技术,虽然出现在两千多年前,但其中使用了算法和密匙的概念,所以与现代密码理论也是有紧密联系的。1 + 1 > 2
没错,我们倘若将前边两个弱不禁风的加密方案进行复合加密,就可以产生壹加壹大于二的效果! 这是一个经过复合加密的密文:Kocfqgcjpuo 大家尝试一下破译吧!课后作业
一、下节课我们将继续分析凯撒密码的几个强大变形密码方案,会涉及到高等数学的排列与组合,大家可以先预习下,下节课小甲鱼会讲解到。 二、用自己习惯的语言,开始写一个加解密的工具吧!小甲鱼这里给大家提供了C和DELPHI的源码参考!(C 和 Delphi源代码参考)重口味挑战
加入鱼C互动起来吧:破译游戏欢迎来破处! [kml_flashembed publishmethod="static" fversion="8.0.0" movie="http://player.youku.com/player.php/sid/XNDM0OTExNjgw/v.swf" width="600" height="450" targetclass="flashmovie" wmode="transparent"]![Get Adobe Flash player](http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif)