DES补充材料
在本文档中,所有位和字节都以大端秩序排列。也就是说,位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 |
该表指定了64位块上的输入置换。含义如下:输出的第一位取自输入的第58位;第二位来自50位,依此类推,输出的最后位取自输入的第7位。
此信息以易于介绍的表格表示;它是向量,而不是矩阵。
最终排列(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 |
最终排列是初始排列的倒数。表的解释类似。
扩展功能(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 |
扩展函数被解释为初始和最终排列。请注意,输入中的某些位在输出时重复;例如,输入的第五位在输出的第六位和第八位重复。因此,32位半块扩展到48位。
置换(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位半块块的位变为。
排列的选择1(PC-1)
|
|
表格的“左”和“右”一半显示,从输入密钥中示出了关键时间表状态的左右部分。请注意,只选择了64位输入的56位;将其余八个(8、16、24、32、40、48、56、64)指定为均等位。
排列的选择2(PC-2)
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 |
该置换量从56位钥匙安排状态中选择每个回合的48位子钥匙。此排列将忽略下面的8位:
排列的选择2“ PC-2”忽略了位9、18、22、25、35、38、43、54。
替换盒(S-boxes)
S 1 | x0000x | x0001x | x0010x | x0011x | X0100X | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | X1100X | x1101x | x1110x | x1111x |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0yyyy0 | 14 | 4 | 13 | 1 | 2 | 15 | 11 | 8 | 3 | 10 | 6 | 12 | 5 | 9 | 0 | 7 |
0yyyy1 | 0 | 15 | 7 | 4 | 14 | 2 | 13 | 1 | 10 | 6 | 12 | 11 | 9 | 5 | 3 | 8 |
1yyyy0 | 4 | 1 | 14 | 8 | 13 | 6 | 2 | 11 | 15 | 12 | 9 | 7 | 3 | 10 | 5 | 0 |
1yyyy1 | 15 | 12 | 8 | 2 | 4 | 9 | 1 | 7 | 5 | 11 | 3 | 14 | 10 | 0 | 6 | 13 |
S 2 | x0000x | x0001x | x0010x | x0011x | X0100X | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | X1100X | x1101x | x1110x | x1111x |
0yyyy0 | 15 | 1 | 8 | 14 | 6 | 11 | 3 | 4 | 9 | 7 | 2 | 13 | 12 | 0 | 5 | 10 |
0yyyy1 | 3 | 13 | 4 | 7 | 15 | 2 | 8 | 14 | 12 | 0 | 1 | 10 | 6 | 9 | 11 | 5 |
1yyyy0 | 0 | 14 | 7 | 11 | 10 | 4 | 13 | 1 | 5 | 8 | 12 | 6 | 9 | 3 | 2 | 15 |
1yyyy1 | 13 | 8 | 10 | 1 | 3 | 15 | 4 | 2 | 11 | 6 | 7 | 12 | 0 | 5 | 14 | 9 |
S 3 | x0000x | x0001x | x0010x | x0011x | X0100X | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | X1100X | x1101x | x1110x | x1111x |
0yyyy0 | 10 | 0 | 9 | 14 | 6 | 3 | 15 | 5 | 1 | 13 | 12 | 7 | 11 | 4 | 2 | 8 |
0yyyy1 | 13 | 7 | 0 | 9 | 3 | 4 | 6 | 10 | 2 | 8 | 5 | 14 | 12 | 11 | 15 | 1 |
1yyyy0 | 13 | 6 | 4 | 9 | 8 | 15 | 3 | 0 | 11 | 1 | 2 | 12 | 5 | 10 | 14 | 7 |
1yyyy1 | 1 | 10 | 13 | 0 | 6 | 9 | 8 | 7 | 4 | 15 | 14 | 3 | 11 | 5 | 2 | 12 |
S 4 | x0000x | x0001x | x0010x | x0011x | X0100X | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | X1100X | x1101x | x1110x | x1111x |
0yyyy0 | 7 | 13 | 14 | 3 | 0 | 6 | 9 | 10 | 1 | 2 | 8 | 5 | 11 | 12 | 4 | 15 |
0yyyy1 | 13 | 8 | 11 | 5 | 6 | 15 | 0 | 3 | 4 | 7 | 2 | 12 | 1 | 10 | 14 | 9 |
1yyyy0 | 10 | 6 | 9 | 0 | 12 | 11 | 7 | 13 | 15 | 1 | 3 | 14 | 5 | 2 | 8 | 4 |
1yyyy1 | 3 | 15 | 0 | 6 | 10 | 1 | 13 | 8 | 9 | 4 | 5 | 11 | 12 | 7 | 2 | 14 |
S 5 | x0000x | x0001x | x0010x | x0011x | X0100X | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | X1100X | x1101x | x1110x | x1111x |
0yyyy0 | 2 | 12 | 4 | 1 | 7 | 10 | 11 | 6 | 8 | 5 | 3 | 15 | 13 | 0 | 14 | 9 |
0yyyy1 | 14 | 11 | 2 | 12 | 4 | 7 | 13 | 1 | 5 | 0 | 15 | 10 | 3 | 9 | 8 | 6 |
1yyyy0 | 4 | 2 | 1 | 11 | 10 | 13 | 7 | 8 | 15 | 9 | 12 | 5 | 6 | 3 | 0 | 14 |
1yyyy1 | 11 | 8 | 12 | 7 | 1 | 14 | 2 | 13 | 6 | 15 | 0 | 9 | 10 | 4 | 5 | 3 |
S 6 | x0000x | x0001x | x0010x | x0011x | X0100X | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | X1100X | x1101x | x1110x | x1111x |
0yyyy0 | 12 | 1 | 10 | 15 | 9 | 2 | 6 | 8 | 0 | 13 | 3 | 4 | 14 | 7 | 5 | 11 |
0yyyy1 | 10 | 15 | 4 | 2 | 7 | 12 | 9 | 5 | 6 | 1 | 13 | 14 | 0 | 11 | 3 | 8 |
1yyyy0 | 9 | 14 | 15 | 5 | 2 | 8 | 12 | 3 | 7 | 0 | 4 | 10 | 1 | 13 | 11 | 6 |
1yyyy1 | 4 | 3 | 2 | 12 | 9 | 5 | 15 | 10 | 11 | 14 | 1 | 7 | 6 | 0 | 8 | 13 |
S 7 | x0000x | x0001x | x0010x | x0011x | X0100X | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | X1100X | x1101x | x1110x | x1111x |
0yyyy0 | 4 | 11 | 2 | 14 | 15 | 0 | 8 | 13 | 3 | 12 | 9 | 7 | 5 | 10 | 6 | 1 |
0yyyy1 | 13 | 0 | 11 | 7 | 4 | 9 | 1 | 10 | 14 | 3 | 5 | 12 | 2 | 15 | 8 | 6 |
1yyyy0 | 1 | 4 | 11 | 13 | 12 | 3 | 7 | 14 | 10 | 15 | 6 | 8 | 0 | 5 | 9 | 2 |
1yyyy1 | 6 | 11 | 13 | 8 | 1 | 4 | 10 | 7 | 9 | 5 | 0 | 15 | 14 | 2 | 3 | 12 |
S 8 | x0000x | x0001x | x0010x | x0011x | X0100X | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | X1100X | x1101x | x1110x | x1111x |
0yyyy0 | 13 | 2 | 8 | 4 | 6 | 15 | 11 | 1 | 10 | 9 | 3 | 14 | 5 | 0 | 12 | 7 |
0yyyy1 | 1 | 15 | 13 | 8 | 10 | 3 | 7 | 4 | 12 | 5 | 6 | 11 | 0 | 14 | 9 | 2 |
1yyyy0 | 7 | 11 | 4 | 1 | 9 | 12 | 14 | 2 | 0 | 6 | 10 | 13 | 15 | 3 | 5 | 8 |
1yyyy1 | 2 | 1 | 14 | 7 | 4 | 10 | 8 | 13 | 15 | 12 | 9 | 0 | 3 | 5 | 6 | 11 |
该表列出了DES中使用的八个S框。每个S-box用4位输出替换6位输入。给定6位输入,可以通过使用外部两个位选择行,然后使用内部四个位选择列来找到4位输出。例如,输入“ 0 1101 1 ”具有外部位“ 01 ”,并且内部位“ 1101”;指出第一行是“ 00”,第一行是“ 0000”,S-box S 5的相应输出为“ 1001”(= 9),第二行中的值是第14列。 (请参阅S-Box )。
关键一代
用户提供的主要密钥是64位。使用以下操作执行。
降低平价位
掉落灰色位置(8倍)的位,使每轮进一步操作56位空间。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
在根据下表置入位置之后,
该桌子是行大道,是指,
实际位位置=用行 * 8 +列的位替换。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
0 | 57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 |
1 | 58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 |
2 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
3 | 60 | 52 | 44 | 36 | 63 | 55 | 47 | 39 |
4 | 31 | 23 | 15 | 7 | 62 | 54 | 46 | 38 |
5 | 30 | 22 | 14 | 6 | 61 | 53 | 45 | 37 |
6 | 29 | 21 | 13 | 5 | 28 | 20 | 12 | 4 |
位旋转
在选择圆形键键之前,关键时间表状态的每一半都由许多位置旋转。该表指定旋转的位置数量。
•钥匙分为两个28位零件
•每个零件都向左移动(圆形)一两个位
•转移后,将两个部分组合在一起以形成56位温度键
回合数 | 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 |
密钥压缩
•压缩P-box将56位密钥更改为48位键,该密钥用作相应的回合的键。
该桌子是行大道,是指,
实际位位置=用行 * 8 +列的位替换。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
1 | 14 | 17 | 11 | 24 | 01 | 05 | 03 | 28 |
2 | 15 | 06 | 21 | 10 | 23 | 19 | 12 | 04 |
3 | 26 | 08 | 16 | 07 | 27 | 20 | 13 | 02 |
4 | 41 | 52 | 31 | 37 | 47 | 55 | 30 | 40 |
5 | 51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 |
6 | 34 | 53 | 46 | 42 | 50 | 36 | 29 | 32 |
此后,将48位的圆头返回到所谓的功能,即圆形。