转 常用加密算法介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
转常用加密算法介绍
5.3.1古典密码算法
古典密码大都比较简单,这些加密方法是根据字母的统计特性和语言学知识加密的,在可用计算机进行密码分析的今天,很容易被破译。虽然现在很少采用,但研究这些密码算法的原理,对于理解、构造和分析现代密码是十分有益的。表5-1给出了英文字母在书报中出现的频率统计。
表5-1英文字母在书报中出现的频率
字母
A B
C D
E F
G H
I J
K L
M
频率
13.05 9.02 8.21 7.81 7.28 6.77 6.64 6.64 5.58 4.11 3.60 2.93 2.88
字母
N O
P Q
R S
T U
V W
X Y
Z
频率
2.77 2.62 2.15 1.51 1.49 1.39 1.28 1.00 0.42 0.30 0.23 0.14 0.09
古典密码算法主要有代码加密、替换加密、变位加密、一次性密码簿加密
等几种算法。
1.代码加密
代码加密是一种比较简单的加密方法,它使用通信双方预先设定的一组有
确切含义的如日常词汇、专有名词、特殊用语等的代码来发送消息,一般只能
用于传送一组预先约定的消息。
密文:飞机已烧熟。
明文:房子已经过安全检查。
代码加密的优点是简单好用,但多次使用后容易丧失安全性。
2.替换加密
将明文字母表M中的每个字母替换成密文字母表C中的字母。这一类密码
包括移位密码、替换密码、仿射密码、乘数密码、多项式代替密码、密钥短语
密码等。这种方法可以用来传送任何信息,但安全性不及代码加密。因为每一
种语言都有其特定的统计规律,如英文字母中各字母出现的频度相对基本固定,根据这些规律可以很容易地对替换加密进行破解。以下是几种常用的替换加密
算法。
1)移位密码是最简单的一类代替密码,将字母表的字母右移k个位置,并
对字母表长度作模运算,其形式为:ek(m)=(k+m)=c mod q,解密变换为:
dk(c)=(m-k)=m mod q。凯撒(Caesar)密码是对英文26个字母进行移位代替的
密码,其q=26。这种密码之所以称为凯撒密码,是因为凯撒使用过k=3的这种
密码。
2)乘数密码也是一种替换密码,它将每个字母乘以一个密钥k,ek(m)=km mod q,其中k和q是互素的,这样字母表中的字母会产生一个复杂的剩余集合,若是和q不互素,则会有一些明文字母被加密成相同的密文字母,而且不是所
有的字母都会出现在密文字母表中。异或运算(XOR)也常用于替换加密,加密:
c=m XOR k,解密:m=c XOR k。
3)多名或同音替换。每个字母可加密或替换成多个密文字母,这种方法是
一种一对多的映射关系,可以挫败一般的频度分析攻击。
3.变位加密
变位加密不隐藏明文的字符,即明文的字母保持相同,但其顺序被打乱重
新排列成另一种不同的格式,由于密文字符与明文字符相同,密文中字母的出
现频率与明文中字母的出现频率相同,密码分析者可以很容易地由此进行判别。虽然许多现代密码也使用换位,但由于它对存储要求很大,有时还要求消息为
某个特定的长度,因而比较少用。以下介绍几种常见的变位加密算法。
1)简单变位加密。预先约定好一组数字表示密钥,将文字依次写在密钥下,再按数字次序重新组织文字实现加密,也有人喜欢将明文逆序输出作为密文。
例如
密钥:5 24 16 3(密文排列次序)
明文:信息安全技术
密文:技息全信术安
2)列变位法。将明文字符分割成个数固定的分组(如5个一组,5即为密钥!),按一组一行的次序整齐排列,最后不足一组用任意字符填充,完成后按列读取即成密文。如明文是:InformationSecurityTechnology,则分组排列为:
I nf or ma ti o
n Se cu ri ty T
e ch no lo gy
则密文是:ImnrelnaSicoftethgoicynyrouTo,这里的密钥是数字5。解密
过程则是按列排列密文,再按行读取即可。
3)矩阵变位加密。将明文中的字母按给定的顺序安排在一个矩阵中,然后
用另一种顺序选出矩阵的字母来产生密文。一般为按列变换次序,如原列次序
为1234,现为2413。如将明文Network Security按行排列在3×6矩阵中,如下所示:
1 23 45 6
N et wo r
k Se cu ri ty
给定一个置换:,根据给定的次序,按5、2、6、4、1、3的列序重新排列,得到:
5 2
6 41 3
o er wN t
c ue kS iy rt
所以,密文为:oerwNtc uekS iyrt。解密过程正好相反,按序排列密文后,通过列置换再按行读取数据即可。
4.一次性密码簿加密
一次性密码簿加密具有代码加密的可靠性,又保持了替换加密的灵活性,
密码簿每一页都是不同的代码表,可用一页上的代码来加密一些词,用后销毁,再用另一页加密另一些词,直到全部的明文完成加密,破译的唯一方法就是获
取一份相同的密码簿。
一次性密码簿加密,要求密码簿至少不小于明文长度,即不得重复用来加
密明文的不同部分,否则密文就会呈现出某种规律性,也就可能被破译。一般
这种加密方法只用于高度保密的场合下,因为如何将至少同长度的密码簿护送
到接收端是一个大代价的行动。
5.3.2单钥加密算法
传统加密方法的统计特性是此类算法致命的缺陷。为了提高保密强度,可
将这几种加密算法结合使用,形成秘密密钥加密算法。由于可以采用计算机硬
件和软件相结合来实现加密和解密,算法的结构可以很复杂,有很长的密钥,
使破译很困难,甚至不可能。由于算法难以破译,可将算法公开,攻击者得不
到密钥,也就不能破译,因此这类算法的保密性完全依赖于密钥的保密,且加
密密钥和解密密钥完全相同或等价,又称为对称密钥加密算法,其加密模式主
要有序列密码(也称流密码)和分组密码两种方式。
流密码是将明文划分成字符(如单个字母),或其编码的基本单元(如0、1
数字),字符分别与密钥流作用进行加密,解密时以同步产生的同样的密钥流解密。流密码的强度完全依赖于密钥流序列的随机性和不可预测性,其核心问题
是密钥流生成器的设计,流密码主要应用于政府和军事等国家要害部门。根据
密钥流是否依赖于明文流,可将流密码分为同步流密码和自同步流密码,目前,同步流密码较常见。由于自同步流密码系统一般需要密文反馈,因而使得分析
工作复杂化,但其具有抵抗密文搜索攻击和认证功能等优点,所以这种流密码
也是值得关注的研究方向。
分组密码是将明文消息编码表示后的数字序列x1,x2,…,xi,…,划分
为长为m的组x=(xo,xl,…,xm-1),各组(长为m的矢量),分别在密钥
k=(ko,k1,…,kL-1)控制下变换成等长的输出数字序列y=(yo,y1,…,yn-1)(长为n的矢量),其加密函数E:Vn×K→Vn,Vn是n维矢量空间,K为密钥
空间。它与流密码不同之处在于输出的每一位数字不是只与相应时刻输入的明