|
DES算法第一步
输入64个二进制位明码文数据区组
T=t1t2…t64
按初始换位表IP进行换位,得到区组B(0):
B(0)=b1(0)b2(0)…b64(0)=t58t50…t7
初始换位表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
|
|
DES算法第二步
设B(i)=b1(i)b2(i)…b64(i)是第i+1次迭代的64个二进制位输入区组,将B(i)分为左右两个大小相等的部分,每部分为一个32位二进制的数据块
L(i)=l1(i)l2(i)…l32(i)=
b1(i)b2(i)…b32(i)
R(i)=r1(i)r2(i)…r32(i)=b33(i)b34(i)…b64(i)
把R(i)视为由8个4位二进制的块组成
r1(i)r2(i)
r3(i)r4(i)
r5(i)r6(i)
r7(i)r8(i)
…
r29(i)r30(i)
r31(i)r32(i)
通过循环抄录相邻块的相邻块,把它们再扩充为8个6位二进制的块
r32(i)r1(i)
r2(i)r3(i) r4(i)r5(i)
r4(i)r5(i)
r6(i)r7(i) r8(i)r9(i)
…
r28(i)r29(i)
r30(i)r31(i) r32(i)r1(i)
用E(R(i))表示这个变换,称为扩充函数。
扩充函数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
|
|
16
|
17
|
18
|
19
|
20
|
21
|
|
20
|
21
|
22
|
23
|
24
|
25
|
|
24
|
25
|
26
|
27
|
28
|
29
|
|
28
|
29
|
30
|
31
|
32
|
1
|
|
DES算法第三步:卡型分类
在第i+1次迭代中,用48位二进制的密钥
K(i+1)=k1(i+1)k2(i+1)…k48(i+1)
与E(R(i))按位相加(逻辑异或),得
r32(i)+ k1(i+1)
r1(i) +k2(i+1) …r5(i)
+k6(i+1)
r4(i)+ k7(i+1)
r5(i) +k8(i+1) …r9(i)
+k12(i+1)
....
r28(i)+ k48(i+1)
r29(i) +k44(i+1) …r1(i)
+k48(i+1)
|