最先的密码实例之一是凯撒密码。尤里乌斯.凯撒(Julius Caesar)在其做品《高卢战记》中首先介绍。密码中从A到W的每一个字母在加密时用字母表中位于其后三位的那个字母代替,字母X,Y,Z则分别被替换成A,B,C。安全
凯撒对字母进行了3移位,但从1到25中的任意数的移位都能产生相似的效果。任一种移位如今一般都被视为使用了凯撒密码。工具
外面的环能够自由转动。若是从外环的字母A对应于内环的A开始,经2次移位外环的C就到了内环A处。共有26中移位方式。其加密密钥与解密密钥都是用来移位数来决定的。this
利用凯撒轮做为工具对凯撒密码的描述能够改换成用数学的方式来定义。咱们注意到26移位与0移位是相同的。这是由于26移位恰是凯撒轮旋转了一整圈。这一推理能够应用至其余移位,即任一移位等价于0到25之间的某个数的移位。例如37移位,是经过凯撒轮转一整圈而后再通过11移位获得。那么37移位等价于11移位,这种说法就能够写成37=11(mod 26)编码
这就是使用了模26的算术,其中26称为模。模算术-除了26之外还有不少其余的模,在一些密码学领域里起着关键做用。加密
凯撒密码有时也称为加法密码。只需以以下方式为各个字母分派一个整数值:设计
A=0,B=1,...,Z=253d
用y移位的凯撒密码进行加密,就是用数x+y(mod 26)来替代数x。例如N是字母表中第14个字母,因此N=13。用15位移对N加密,那么x=13,y=15。加密后的N是13+15=28=2(mod 26),因此N就被加密成了C。blog
制做一个简单代换密码,能够在一个严格按字母顺序排列的字母表下面,写下一个按随机顺序排列的字母表。数学
该密码的加密密钥与解密密钥是相同的,就是粗体字母的次序。加密规则是“将每一个字母替换为位于它下面的字母”,解密规则是相反的程序。扩展
简单代换密码的密钥个数,等于字母表中26个字母可按不一样顺序排列的方法数,它被称为26的阶乘,记为26!,也就是 26*25*24*...*3*2*1。等于
没有人会用穷举搜索法去寻找密钥。
问题1,很难记住
问题2,若是被看见或偷去,就会危及这个系统的安全。
为了不这种风险,使用者试图找到可以产生容易记忆的密钥的方法。
一种常见的方法是:想出一个密钥短语,去掉全部重复字母,让它们做为密钥的开头,而后按字母表的顺序加上还没有出现过的字母,使之扩展成完整的密钥。
例如,设密钥短语为“We hope you enjoy this book”,去掉重复字母后即变为"wehopyunjtisbk",那么密钥就是
显然当限制密钥只能从密钥短语中导出时,密钥的数目会大大缩减,由于在26!种可能的简单代换密钥中,至关大的比例是不可能由一个英文短语用上述方式导出的。
第二个问题是:极可能存在许多不一样的密钥将同一信息加密成同一密文的状况。
例如:信息为“MEET ME TONIGHT”,使用上面密钥加密则密文为:"FTTP FT PREYZSP"。
可是这种密钥个数多达:18!=6,402,373,705,728,000
普莱费尔密码是查尔斯.惠特斯通(Charles Wheatstone)爵士与莱昂.普莱费尔(Lyon Playfair)男爵于1854年发明的,在英国战争部一直使用到20世纪初,包括在布尔战争期间。它是“双字母组”密码的一个例证,意味着字母是成对而不是单个加密的。密钥是一个5行5列的方阵(内含25个字母,即在字母表中删去J以后剩下的字母),密钥个数达到25!
在用普莱费尔密码加密以前,信息必须稍稍从新排列一下,方法以下
1.用I代替J
2.将信息写成字母对的形式
3.避免出现一样的字母组成的字母对,若是出现,则在他们之间插入Z
4.若是写出的字母个数是奇数,则在结尾处加上Z
为了解释该密码运做方式,选取一个具体的密钥
一旦信息获得了适当的从新排列,便给出了加密规则。将原来的密钥扩充为6*6.第六行与第一行相同,第六列与第一列相同。
加密规则以下:
1.若是两个字母位于密钥的同一行,则每一个字母都替换为扩充后的密钥中位于它右侧的字母
2.若是两个字母位于密钥的同一列,则每一个字母都替换为扩充后的密钥中位于它下方的字母
3.若是两个字母既不在同一行,也再也不同一列,则第一个字母替换为与它同行,但列数与第二个字母相同的字母,第二个字母替换为与刚使用过的三个字母造成矩阵的那个字母
加密下面的信息:GOOD BROOMS SWEEP CLEAN
信息中没有字母J,只须在用字母对的形式写这条信息时适当地加入字母Z,便获得
GO OD BR OZ OM SZ SW EZ EP CL EA NZ
根据加密规则,所有密文变为
FP UT EC UW PO DV TV BV CM BG CS DY
解密规则与加密规则相反。
例如:解密MBOUBTZE
解为:BOREDOMZ
改进简单替换密码,使得明文中诸如E这样的字母能用不止一个密文符号来表达。
每一个密文数字仅表明惟一一个明文字母,但字母A,E,N,O,R,T中任何一个都由两个不一样的数字来表明。
THEETH这个有两对重复字母的词,能够写成24 27 13 08 31。
利用维热纳尔方阵来进行加密。这个方阵最坐标(密钥)列是英文字母表,对此列的每个字母,与它相对应的哪一行是字母表的一个循环,并以该字母为循环的起始字母,与它相对应的哪一行是字母表的一个循环,并以该字母为循环的起始字母。
最左边这列上的每一个字母实际上都对应着一个凯撒密码,其移位由该字母所肯定。
设计密码最经常使用的一个方法是选择一个无重复字母的密钥词或短语。若是明文信息比密钥词长,那么就重复密钥次数视须要而定。
例如当信息是PLAINTEXT而密钥词是fred时,获得
下面利用该方阵来加密这条信息
加密字母P,要用位于它下面的密钥字母f,从f对应的哪行中读取出位于P下方的字母,即U。
密文为:U C E L S L I A Y
基于改换字母书写次序的密码。
密钥是一个很小的数。用5做为密钥,在利用这个密钥加密信息时,先将信息按4个字母一行写好,加密时则从第一个列字母开始写,而后写第二列字母。若是这个信息的长度不是5的倍数,那么加密前须要在信息的末端加上适当个数的Z。
好比,加密WHAT WAS THE WETAHER LIKE NO FRIDAY
由于密钥是5,加密过程的第一步是将信息写为5个字母一行的形式
而后依次按列的顺序读下密文
WAWEEIHSERODATALANATHTIFYWEHKRZ
组合两个或多个弱的密码能够得出比原来任一个都强的密码。称为超级加密。
通讯这所能期望的最好结果是当第三方设法拦截时,其拦截到的东西不能给他们带来任何有助于了解信息真实内容的状况。密码系统应该博士截获密文的人仍要去猜想信息的内容。
达到上述目的的系统便可被认为提供了彻底保密。
#