密码学-理解DES加密算法
1.首先,要明确几个简单的概念
-
key:8个字节共64位的工作密钥,必须是8字节。但是实际用到的是56字节,剩下的8字节用于校验
-
data:8个字节共64位的需要被加密或被解密的数据
2. 流程图

下图为16轮重复运算的具体过程

3.算法的流程简单分析
1)IP置换--处理data
IP置换目的是将输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位。
置换规则如下表所示:表格中的数字为位置,这点要注意,不是内容,以后的表中的内容也只是位置,而不是数据!!!!一定要注意
这张映射表的内容是固定的,不用纠结
|
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 |
然后就这个8*8的表格就被分成了左右两个,即L0和R0

2)秘钥置换--处理key
- 要把64为秘钥改成56位,删掉8,16,24,32,40,48,56和64这8位,见下表
|
57 |
49 |
41 |
33 |
25 |
17 |
9 |
1 |
58 |
50 |
42 |
34 |
26 |
18 |
|
10 |
2 |
59 |
51 |
43 |
35 |
27 |
19 |
11 |
3 |
60 |
52 |
44 |
36 |
|
63 |
55 |
47 |
39 |
31 |
23 |
15 |
7 |
62 |
54 |
46 |
38 |
30 |
22 |
|
14 |
6 |
61 |
53 |
45 |
37 |
29 |
21 |
13 |
5 |
28 |
20 |
12 |
4 |
- 将剩下的56位分成两组,每组28位,分别为C0和D0。划分结果如下

- 在DES的每一轮中(要进行16轮,后面会说),从56位密钥产生出不同的48位子密钥,确定这些子密钥的方式如下为:
根据轮数,这两部分分别循环左移1位或2位。每轮移动的位数如下表:
|
轮数 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
|
位数 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
为了方便理解,简单解释一下怎么左移,第一轮,位数为1,则:
C0:

现在C1:
49-41-33-25-17-------------57
就是整体向前移动一位,后面D0也是一样的道理。
- 最终从56位得到48位,表中没有9,18,22,25,35,38,43和54这8位
|
14 |
17 |
11 |
24 |
1 |
5 |
3 |
28 |
15 |
6 |
21 |
10 |
|
23 |
19 |
12 |
4 |
26 |
8 |
16 |
7 |
27 |
20 |
13 |
2 |
|
41 |
52 |
31 |
37 |
47 |
55 |
30 |
40 |
51 |
45 |
33 |
48 |
|
44 |
49 |
39 |
56 |
34 |
53 |
46 |
42 |
50 |
36 |
29 |
32 |
3)扩展置换
目的是将有半段R0由32位拓展为48位

如上图所示,第一列和第六列均为拓展内容,拓展的规则我已经标注好,这样便于理解。
4)与秘钥异或操作
经过上面的操作,秘钥长度已经从64位控制位48位,与R0长度一致,进行异或操作,得出结果。
5)进行S盒变换
得到的异或后的48位后,将其分成8组,放入8个S盒中。每个S盒有6位输入4位输出。最终输出为32位
每个S盒的映射表都是固定的,为了方便,我这列出其中一个盒子的映射表
|
13 |
2 |
8 |
4 |
6 |
15 |
11 |
1 |
10 |
9 |
3 |
14 |
5 |
0 |
12 |
7 |
|
1 |
15 |
13 |
8 |
10 |
3 |
7 |
4 |
12 |
5 |
6 |
11 |
0 |
14 |
9 |
2 |
|
7 |
11 |
4 |
1 |
9 |
12 |
14 |
2 |
0 |
6 |
10 |
13 |
15 |
3 |
5 |
8 |
|
2 |
1 |
14 |
7 |
4 |
10 |
8 |
13 |
15 |
12 |
9 |
0 |
3 |
5 |
6 |
11 |
例如,假设S盒8的输入为110011,第1位和第6位组合为11,11对应十进制为3,对应于S盒8的第3行;第2位到第5位为1001,1001对应十进制为9,对应于S盒8的第9列。最终结果为12 (都是从下标为0开始计算的)

6)P盒变换
比较简单,将32位对应映射表进行映射即可(表示确定好的,不要纠结这个)
|
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 |
7)结果与L0异或
8)重复 2)-7)步骤 ,总共16次
9)将L15和R15组合成64位
10)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 |
最后得出密文!!

浙公网安备 33010602011771号