Процедура формирования подключей

Рис. 18.8. Формирование подключей

На каждом цикле (рис. 18.8) из ключа X длиной 56бит формируется ключ Xi размером 48 бит. Сам ключ X размещается в восьмибайтовом слове, причем восьмые разряды каждого байта являются контрольными и в ключ не входят. Перед шифрованием, в соответствии с процедурой выбора PC1 (табл. 18.2), из X выбираются 56 бит, которыми заполняются два регистра (C и D) длиной 28 бит каждый. В дальнейшем, при входе в очередной цикл с номером i, регистры сдвигаются циклически влево. Величина сдвига зависит от номера цикла, ноявляется фиксированной и заранее известна. После сдвига оба подблока объединяются в порядке (C, D). Затем, в соответствии с функцией выбора PC2 (табл. 18.3), из них выбираются 48 бит подключа Xi. Шифрование и расшифровывание отличаются направлением сдвигов (табл. 18.4).

Таблица 18.2. Преобразование PC1

Заполнение С Заполнение D

Таблица 18.3. Преобразование PC2

Выбор битов по таблицам 18.2–18.4 из соответствующих блоков производится следующим образом. Таблица рассматривается как последовательность ее строк, записанных друг за другом, начиная с первой строки. Биты блока данных соответствующей длины нумеруются слева направо, начиная с единицы. Каждый элемент s таблицы рассматривается, как номер бита bs в блоке данных. Преобразование заключается в замене всех элементов s на биты bs.

Таблица 18.4. Соответствие сдвигов номерам циклов DES

Номер цикла
Сдвиг влево (шифрование)
Сдвиг вправо (расшифровывание)

Цикловая функция производит следующие действия.

1. Расширение блока Ri-1 до 48 бит за счет повторения битов блока с помощью функции расширения EP (табл. 18.5).

2. Поразрядное сложение результата с ключомXi.

3. Преобразование полученной суммы с помощью замены (используя так называемые S-блоки), в результате которого получается блок длиной 32 бит.

4. Применение перестановки P (табл. 18.6), что дает значение функции
Y = f(R,X).

Таблица 18.5. Преобразование EP Таблица 18.6. Перестановка P