③ 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公司研制的对称密码体制加密算法。