В этой статье подробно описаны различные таблицы, указанные в блочном шифре стандарта шифрования данных (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 (ПК-1) [ править ]
|
|
«Левая» и «правая» половины таблицы показывают, какие биты клавиши ввода образуют левую и правую части состояния расписания клавиш. Обратите внимание, что выбраны только 56 бит из 64 битов ввода; остальные восемь (8, 16, 24, 32, 40, 48, 56, 64) были указаны для использования в качестве битов четности .
Альтернативный вариант 2 (ПК-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 |
Эта перестановка выбирает 48-битный подключ для каждого раунда из 56-битного состояния расписания ключей. Эта перестановка игнорирует 8 бит ниже:
Переставленный вариант 2 "PC-2" Игнорируемые биты 9,18,22,25,35,38,43,54.
Ящики для замены (S-блоки) [ править ]
S 1 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | x1100x | x1101x | x1110x | x1111x |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0ггг0 | 14 | 4 | 13 | 1 | 2 | 15 | 11 | 8 | 3 | 10 | 6 | 12 | 5 | 9 | 0 | 7 |
0ггг1 | 0 | 15 | 7 | 4 | 14 | 2 | 13 | 1 | 10 | 6 | 12 | 11 | 9 | 5 | 3 | 8 |
1ггг0 | 4 | 1 | 14 | 8 | 13 | 6 | 2 | 11 | 15 | 12 | 9 | 7 | 3 | 10 | 5 | 0 |
1ггг1 | 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 |
0ггг0 | 15 | 1 | 8 | 14 | 6 | 11 | 3 | 4 | 9 | 7 | 2 | 13 | 12 | 0 | 5 | 10 |
0ггг1 | 3 | 13 | 4 | 7 | 15 | 2 | 8 | 14 | 12 | 0 | 1 | 10 | 6 | 9 | 11 | 5 |
1ггг0 | 0 | 14 | 7 | 11 | 10 | 4 | 13 | 1 | 5 | 8 | 12 | 6 | 9 | 3 | 2 | 15 |
1ггг1 | 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 |
0ггг0 | 10 | 0 | 9 | 14 | 6 | 3 | 15 | 5 | 1 | 13 | 12 | 7 | 11 | 4 | 2 | 8 |
0ггг1 | 13 | 7 | 0 | 9 | 3 | 4 | 6 | 10 | 2 | 8 | 5 | 14 | 12 | 11 | 15 | 1 |
1ггг0 | 13 | 6 | 4 | 9 | 8 | 15 | 3 | 0 | 11 | 1 | 2 | 12 | 5 | 10 | 14 | 7 |
1ггг1 | 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 |
0ггг0 | 7 | 13 | 14 | 3 | 0 | 6 | 9 | 10 | 1 | 2 | 8 | 5 | 11 | 12 | 4 | 15 |
0ггг1 | 13 | 8 | 11 | 5 | 6 | 15 | 0 | 3 | 4 | 7 | 2 | 12 | 1 | 10 | 14 | 9 |
1ггг0 | 10 | 6 | 9 | 0 | 12 | 11 | 7 | 13 | 15 | 1 | 3 | 14 | 5 | 2 | 8 | 4 |
1ггг1 | 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 |
0ггг0 | 2 | 12 | 4 | 1 | 7 | 10 | 11 | 6 | 8 | 5 | 3 | 15 | 13 | 0 | 14 | 9 |
0ггг1 | 14 | 11 | 2 | 12 | 4 | 7 | 13 | 1 | 5 | 0 | 15 | 10 | 3 | 9 | 8 | 6 |
1ггг0 | 4 | 2 | 1 | 11 | 10 | 13 | 7 | 8 | 15 | 9 | 12 | 5 | 6 | 3 | 0 | 14 |
1ггг1 | 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 |
0ггг0 | 12 | 1 | 10 | 15 | 9 | 2 | 6 | 8 | 0 | 13 | 3 | 4 | 14 | 7 | 5 | 11 |
0ггг1 | 10 | 15 | 4 | 2 | 7 | 12 | 9 | 5 | 6 | 1 | 13 | 14 | 0 | 11 | 3 | 8 |
1ггг0 | 9 | 14 | 15 | 5 | 2 | 8 | 12 | 3 | 7 | 0 | 4 | 10 | 1 | 13 | 11 | 6 |
1ггг1 | 4 | 3 | 2 | 12 | 9 | 5 | 15 | 10 | 11 | 14 | 1 | 7 | 6 | 0 | 8 | 13 |
С 7 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | x1100x | x1101x | x1110x | x1111x |
0ггг0 | 4 | 11 | 2 | 14 | 15 | 0 | 8 | 13 | 3 | 12 | 9 | 7 | 5 | 10 | 6 | 1 |
0ггг1 | 13 | 0 | 11 | 7 | 4 | 9 | 1 | 10 | 14 | 3 | 5 | 12 | 2 | 15 | 8 | 6 |
1ггг0 | 1 | 4 | 11 | 13 | 12 | 3 | 7 | 14 | 10 | 15 | 6 | 8 | 0 | 5 | 9 | 2 |
1ггг1 | 6 | 11 | 13 | 8 | 1 | 4 | 10 | 7 | 9 | 5 | 0 | 15 | 14 | 2 | 3 | 12 |
С 8 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x1001x | x1010x | x1011x | x1100x | x1101x | x1110x | x1111x |
0ггг0 | 13 | 2 | 8 | 4 | 6 | 15 | 11 | 1 | 10 | 9 | 3 | 14 | 5 | 0 | 12 | 7 |
0ггг1 | 1 | 15 | 13 | 8 | 10 | 3 | 7 | 4 | 12 | 5 | 6 | 11 | 0 | 14 | 9 | 2 |
1ггг0 | 7 | 11 | 4 | 1 | 9 | 12 | 14 | 2 | 0 | 6 | 10 | 13 | 15 | 3 | 5 | 8 |
1ггг1 | 2 | 1 | 14 | 7 | 4 | 10 | 8 | 13 | 15 | 12 | 9 | 0 | 3 | 5 | 6 | 11 |
В этой таблице перечислены восемь S-блоков, используемых в DES. Каждый S-блок заменяет 6-битный вход 4-битным выходом. При 6-битном входе 4-битный выход находится путем выбора строки с использованием двух внешних битов и столбца с использованием внутренних четырех битов. Например, вход « 0 1101 1 » имеет внешние биты « 01 » и внутренние биты «1101»; отмечая, что первая строка - «00», а первый столбец - «0000», соответствующий вывод для S-блока S 5 будет «1001» (= 9), значение во второй строке, 14-м столбце. (См. S-блок ).
Генерация ключей [ править ]
Основной ключ, предоставляемый пользователем, состоит из 64 бит. С ним производятся следующие операции.
Отбросить биты четности [ править ]
Отбросьте биты серых позиций (8x), чтобы освободить 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 | |
---|---|---|---|---|---|---|---|---|
1 | 57 | 49 | 41 год | 33 | 25 | 17 | 9 | 1 |
2 | 58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 |
3 | 59 | 51 | 43 | 35 год | 27 | 19 | 11 | 3 |
4 | 60 | 52 | 44 | 36 | 63 | 55 | 47 | 39 |
5 | 31 год | 23 | 15 | 7 | 62 | 54 | 46 | 38 |
6 | 30 | 22 | 14 | 6 | 61 | 53 | 45 | 37 |
7 | 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-блок сжатия заменяет 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-битный ключ раунда вызываемой функции, то есть раунду.
Ссылки [ править ]
- Стандарт шифрования данных (DES) (PDF) . Национальный институт стандартов и технологий (NIST). 1999-10-25. FIPS PUB 46-3.