③ i=i+1,转到 ①,直到生成16个全部自密钥。

2、 对64位明文分组加密

1) 取得64位明文,不足补齐(补0)

2) 对明文各位按照IP矩阵进行排列,矩阵为:

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

3) 将得到的结果分为左右各32位两部分,称为L0, R0

4) 从i=1开始,循环执行16次下列的加密过程

① 按照下面矩阵E将32位的Ri-1扩展为48位,所得结果称为E( Ri-1),E阵为:

32 1 2 3 4 5

4 5 6 7 8 9

8 9 10 11 12 13

12 13 14 15 16 17

161718192021

202122232425

242526272829

28293031321

② 将E( Ri-1)和Ki按位异或

③ 将所得结果分为8个部分,每个部分6位,形成B[1],…B[8]

④ S盒替代。

S盒是8个子矩阵,称为S[1],….S[8],替代如下:将B[i]的第1位和第6位组成一个数称为R,第2、3、4、5位组成一个数称为C,用S[i]中对应的(R,C)中的4位数替换B[i],这样就将原来的48位替换成32位。

⑤ P盒置换 ,按照下面的矩阵重新排列上面的结果

16 7 20 21

29 12 28 17

1 15 23 26

5 18 31 10

2 8 24 14

32 2 3 9

19 13 30 6

22 11 4 25

⑥ 将上一步处理的结果与Li-1按位异或,得到新的Ri,该过程可以简单记为:Ri=Li-1⊕F(Ri-1,Ki)

⑦ i=i+1 转④的第一步,直到完成16次循环

⑧ 进行IP-1置换,将上面得到的L16R16按照下面的矩阵进行置换:

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 28

35 3 43 11 51 19 59 27

34 2 42 10 50 18 58 26

33 1 41 9 49 17 57 25

加密过程结束,解密过程是用K16,K15,…..K1

3、DES 算法的伪代码表示

C[0]d[0]=PC1(KEY)

FOR I=1 TO 16

C[I]=LS[I](C[I-1])

D[I]=LS[I](D[I-1])

K[I]=PC2(C[I]D[I])

L[0]R[0]=IP(PLAIN BLOCK)

FOR I=1 TO 16

L[I]=R[I-1]

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

CIPHER BLOCK=FP-1(L[16]R[16])

四、 算法安全性分析

DES算法具有相当高的复杂性, 密码函数F的非线性性质非常好, 起到的“ 扰乱” 效果非常显著, 并且还遵循了严格雪崩准则和比特独立准则, 这使得要破译它的开销要超过可能获得的利益。再加上其便于理解掌握,经济有效, 因此, 得到了广泛的应用。算法具有极高的安全性, 到目前为止, 除了用穷举搜索法对算法进行攻击外, 还没有发现更有效的办法。而56位长的密钥的穷举空间为256, 这意味着如果一台计算机的速度是每一秒种检测一百万个密钥, 则它搜索完全部密钥就需要将近2300年的时间。而采用三重DES,破译它就更可想而知了。当然, 这并不等于说是不可破解的。而实际上, 随着硬件技术和网络的发展, 其破解的可能性越来越大, 而且, 所需要的时间越来越少。

DES算法的有效密钥长度为56位,因此,在实际应用中,我们应避开使用第8,16,24,......64位作为有效数据位,才能保证DES算法安全可靠地发挥作用。如果不了解这一点,将不能保证DES加密数据的安全性,对运用DES来达到保密作用的系统产生数据被破译的危险,这正是DES算法在应用上的误区,留下了被人攻击、被人破译的极大隐患。

小知识之DES算法概念:

DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法