文档介绍:苏 州 科 技 学 院
实 验 报 告
学生姓名:杨刘涛 学 号:126117 指导老师:陶滔
刘学书 126114
试验地点:计算机学院大楼东309 试验时间:-04-20
试验室名称:软件试验室
二、试验项目名称:DES加解密算法实现
三、试验课时:4课时
四、试验原理:
DES算法由加密、子密钥和解密生成三部分组成。现将DES算法介绍以下。
1.加密
DES算法处理数据对象是一组64比特明文串。设该明文串为m=m1m2…m64 (mi=0或1)。明文串经过64比特密钥K来加密,最终生成长度为64比特密文E。其加密过程图示以下:
图2-1:DES算法加密过程
对DES算法加密过程图示说明以下:
待加密64比特明文串m,经过IP置换(初始置换)后,得到比特串下标列表以下:
表2-1:得到比特串下标列表
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
该比特串被分为32位L0和32位R0两部分。R0子密钥K1(子密钥生成将在后面讲)经过变换f(R0,K1)(f变换将在下面讲)输出32位比特串f1,f1和L0做不进位二进制加法运算。运算规则为:
f1和L0做不进位二进制加法运算后结果赋给R1,R0则原封不动赋给L1。L1和R0又做和以上完全相同运算,生成L2,R2…… 一共经过16次运算。最终生成R16和L16。其中R16为L15和f(R15,K16)做不进位二进制加法运算结果,L16是R15直接赋值。
R16和L16合并成64位比特串。值得注意是R16一定要排在L16前面。R16和L16合并后成比特串,经过置换IP-1(终止置换)后所得比特串下标列表以下:
表2-2:置换后所得比特串下标列表
IP-1
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
经过置换IP-1后生成比特串就是密文e。
变换f(Ri-1,Ki):
它功效是将32比特输入再转化为32比特输出。其过程图2-2所表示:
图2-2:将32比特输入再转化为32比特输出
f变换说明:输入Ri-1(32比特)经过变换E(扩展置换E)后,膨胀为48比特。膨胀后比特串下标列表以下:
表2-3:膨胀后比特串下标列表
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
膨胀后比特串分为8组,每组6比特。各组经过各自S盒后,又变为4比特(具体过程见后),合并后又成为32比特。该32比特经过P变换(压缩置换P)后,其下标列表以下:
表2-4:压缩置换P后下标列表
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
经过P变换后输出比特串才是32比特f(Ri-1,Ki).
S盒变换过程: 任取一S盒。见图2-3:
图2-3
在其输入b1,b2,b3,b4,b5,b6中,计算出x=b1*2+b6, y=b5+b4*2+b3*4+b2*8,再从Si