Перестановка с помощью P-блоков
32-битовый выход подстановки с помощью S-блоков, перетасовываются в соответствии с P-блоком. Эта перестановка перемещает каждый входной бит в другую позицию, ни один бит не используется дважды, и ни один бит не игнорируется. Этот процесс называется прямой перестановкой или просто перестановкой. Позиции, в которые перемещаются биты, показаны в Табл. 12-7. Например, бит 21 перемещается в позицию 4, а бит 4 - в позицию 31.
Табл. 12-7.
Перестановка с помощью 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-блока объединяется посредством XOR с левой половиной первоначального 64-битового блока. Затем левая и правая половины меняются местами, и начинается следующий этап.
Заключительная перестановка
Заключительная перестановка является обратной по отношению к начальной перестановки и описана в Табл. 12-8. Обратите внимание, что левая и правая половины не меняются местами после последнего этапа DES, вместо этого объединенный блок R16L16 используется как вход заключительной перестановки. В этом нет ничего особенного, перестановка половинок с последующим циклическим сдвигом привела бы к точно такому же результату. Это сделано для того, чтобы алгоритм можно было использовать как для шифрования, так и для дешифрирования.
Табл. 12-8.
Заключительная перестановка
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 |