DES加密算法实现论文 联系客服

发布时间 : 星期日 文章DES加密算法实现论文更新完毕开始阅读01262b3887c24028915fc3a3

第二章DES加密算法的描述

2.1 DES算法的来历

在20世纪60年代末IBM设计了一个由Horst Feistel领导的计算机密码编码学方面的研究项目,这个任务在1971年结束时研制出了一种称为LUCIFER[FEIS73]算法,这个算法卖给了伦敦的劳埃德保险公司,用于一个也是由IBM所研发的现金分配系统。

1973年美国标准局NBS(National Bureau of Standards)征求国家密码标准方案,IBM就提交了其Tuchman-Meyer项目的结果。这是当时提出的最好的方法。因而在1977年被选为数据加密标准。这就是著名的DES加密算法。以下关于DES加密算法原理,参见文献[1-6]

2.2加密过程

DES的总体方案如图2.1所示。与其他任何一种加密方案一样,加密函数有两个输入:待加密的明文和密钥。.在这里,明文的长度必须为64bit,而密钥的长度为56bit。

64bit 明文 初始置换 56bit 密钥 置换选择1 第1轮 K1 置换选择2 循环左移 第2轮 K2 置换选择2 循环左移 第16轮 K16 置换选择2 循环左移 32bit 对换 逆初始置换 64bit 密文 图2.1DES加密算法的一般描述

Fig 2.1 The DES encrypts the general description of the calculate way

观察这张图的左边部分,可以看到明文的处理经过了三个阶段。首先,64bit的明文经过一个初始置换IP[表2.1 (a)]后,比特重排产生了经过置换的输入。.接下来的一个阶段是由对同一个函数进行16次循环组成的,这个函数本身既包含有置换又包含有替代函数。最后一个循环(第16个)的输出由64bit组成,它是输入明文和密钥的函数,这个输出的左边和右边两

个部分经过交换后就得到预输出。最后,预输出通过一个逆初始置换(IP-1 )[表2.1 (b)] 就

生成了64bit的密文,这个置换是初始置换的逆置换。除了出始和最终置换以外,DES具有严格的Feidtel密码结构。

图二的右半部分给出了56bit密钥的使用方式.密钥首先通过一个置换函数,接着对于16个循环的每一个,都通过一个循环左移操作和一个置换操作的组合产生出一个子密钥Ki。对每一个循环来说,置换函数是相同的,但由于密钥比特的重复移位,产生的子密钥并不相同。

表2.1 DES的置换表 Table 2.1 DES displacement

(a)初始置换(IP) (b)逆初始置换(IP-1)

58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 38 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 (c)扩展置换(E)

32 4 8 12 16 20 24 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 5 9 13 17 21 25 29 1 (d)置换函数(P)

16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25

2.3每个循环的详细过程

图2.2给出了一循环的内部结构。在这里仍然先把注意力集中到图形的左半部分。每个64bit的中间结果的左右两个部分被当成两个独立的32bit数值处理,分别标记为L(左)和R(右)。与任何古典的Feistel密码中一样,每一个循环的总的处理过程都可以总结为下列公式:

L[i]=R[i-1]

R[i]=L[i-1]⊕F(R[i-1], K[i])

在这个循环中使用的密钥Ki的长度是48bit。输入的R的长度是32bit。这个输入的R先被扩展到48bit,扩展操作由表2.1(c)定义,它由包括一个置换和一个包含重复使用R中16个比特的扩展操作组成。所得到的48bit再和Ki进行异或。这样得到的48bit结果再经过一个置换函数S产生32bit的输出,最后按照表2.1(d)进行置换。William Stallings对此进行过详细的研究[4]。

32比特 L[i] 32比特 R[i] 28比特 C[i] 28比特 D[i] 扩展\\置换 (E表) 48 左移 左移 K[i] XOR 48 48 置换\\压缩 (置换选择2) 替代\\选择 32 (S盒) 32 置换(P) XOR L[i+1] R[i+1] C[i+1] [4]D[i+1]

图2.2 DES算法的一个循环 Fig 2.2 A circulation of the DES

[4]

S盒子在函数中的作用是替代由一组8个S盒子完成,其中每一个都接受6个比特作为输入并产生4个比特作为输出。这些变换是由表2.2定义的,这个表的使用方法如下:盒子Si的输入的第一和最后一个比特构成一个2位二进制数,用来选择由Si表中的四行所定义的四种替代的一种,中间的4个比特则选出一列.被上述行和列所选择的单元的十进制数码转换为一个4bit的二进制表示就产生了输出。