Вычисление ключей S-DES

В алгоритме S-DES используется 10-битовый ключ, который должен быть как у отправителя, так и у получателя сообщения. Из этого ключа на определенных этапах шифрования и дешифрования генерируется два 8-битовых подключа. На рис. 2.1 показана схема процедуры создания этих подключей.

Вычисление ключей S-DES

Рис. 2.1

Сначала выполняется перестановка битов ключа следующим образом. Если 10-битовый ключ представить в виде (k1, k2, k3, k4, k5, k6, k7, k8, k9, k10 ), то перестановку P10 можно задать формулой

P10(k1, k2, k3, k4, k5, k6, k7, k8, k9, k10 ) = (k3, k5, k2, k7, k4, k10, k1, k9, k8, k6 ).

Можно также представить перестановку P10 в табличной форме так, как это показано в таблице 2.1.

Таблица 2.1

P10
                   

Эту таблицу следует читать слева направо. Каждый ее элемент идентифицирует позицию бита исходных данных в генерируемой выходной последовательности. Иными словами, первым битом в выходной последовательности будет третий бит исходной последовательности, вторым — пятый и т.д. Например, в соответствии с данной таблицей ключ (1010000010) будет преобразован к виду (1000001100). После этого отдельно для первых пяти битов и отдельно для вторых выполняется циклический сдвиг влево (LS-1), который еще называют вращением. В нашем случае в результате будет получена последовательность (00001 11000).

Затем применяется перестановка P8, в результате которой из 10-битового ключа сначала выбираются, а затем переставляются 8 битов по следующему правилу (см. таблицу 2.2).

Таблица 2.2

P8
               

В результате этой операции получается подключ (K1). В нашем примере он будет иметь вид (10100100).

Теперь нужно вернуться к двум 5-битовым строкам, полученным в результате применения функций LS-1, и выполнить с каждой из этих строк циклический сдвиг влево на две позиции (LS-2). В нашем конкретном случае значение (00001 11000) будет преобразовано к виду (00100 00011). Наконец, применив к полученной в результате последовательности перестановку Р8, получим подключ К2. Для нашего примера результатом будет (01000011).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: