Алгоритм получения ключей (48-битных из 64-битных)
K(i) i=1-16
На каждой итерации используется новое значение ключа K(i), которое вычисляется из начального ключа K.
К представляет собой 64-битовый блок с 8 битам контроля по четности, расположенных в позициях 8,16,24,32,40,48,56,64.
Для удаления контрольных битов и перестановки остальных используется функция G первоначальной подготовки ключа.
64->56
G
57 49 41 33 25 17 09
01 …………………
10………………….
19………………..... С(0)
63…………………. D(0)
07 …………………
14………………….
24 12 04
Результат преобразования G(K) разбивается на 2 28битовых блока C(0) и D(0). После определения С(0) и D(0) рекурсивно определяются C(i) и D(i). Для этого применяют циклический сдвиг влево на 1 или 2 бита в зависимости от номера итерации, как показано на таблице 7.
K
G
C(0)
Cд лев
С(1)
Cд лев
С(2)
D(0)
Cд лев
D(1)
Cд лев
D(2)
H
K(1)
H
K(1)
Полученное значение C(i)D(i) вновь перемешивается в соответствии с матрицей H (48-битная).
14 17 11 24 01 05
03………………
23………………
16………………
41………………
30………………
44………………
46………………
K(i)=H(C(i)D(i))
Восстановление исходного текста осуществляется по тому же принципу, но в начале используется ключ K(15)и так до К(1).
Для наиболее полного удовлетворения всех требования, предъявляемых к коммерческим системам шифрования, организовано несколько режимов работы алгоритма DES.
Каждому из режимов свойственны свои достоинства и недостатки, что обуславливает их области применения.
Режим ECB хорошо подходит для шифрования ключей
Режимы CBC и CFB пригодны для аутентификации
Режим CFB также пригоден для шифрования отдельных символов
Режим OFB часто используется в спутниковых системах связи
В этом режиме исходный файл M разбивается на 34-битовые блоки по 8 байт. Каждый из этих блоков кодируется независимо с использованием 1-го ключа шифрования.
Данный алгоритм не рекомендуется использовать для расширения .EXE файлов, так как 1ый блок (заголовок файла) является удачным началом для взлома всего шифра. Однако, в силу своей простоты, этот режим наиболее популярен в любительских разработках.