Алгоритм DES использует комбинацию подстановок и перестановок. DES осуществляет шифрование 64‑битовых блоков данных с помощью 64‑битого ключа, в котором значащими являются 56 бит (остальные 8 бит ‑ проверочные биты для контроля на четность). Расшифрование в DES является операцией, обратной шифрованию, и выполняется путем повторения операций шифрования в обратной последовательности. Обобщенная схема процесса
Шифрование в алгоритме DES (рис. 5.1) заключается в начальной перестановке бит 64‑битого блока, шестнадцати циклах шифрования и, наконец, в конечной перестановке бит.
Следует отметить, что все приводимые таблицы являются стандартными и должны включаться в реализацию алгоритма DES в неизменном виде. Все перестановки и коды в таблицах подобраны разработчиками таким образом, чтобы максимально затруднить процесс взлома шифра.
Пусть из файла исходного текста считан очередной 64‑битовый блок
. Этот блок преобразуется с помощью матрицы начальной перестановки IP (табл. 5.1).
| Таблица 5.1 | |||||||
| Начальная перестановка IP | |||||||
Биты входного блока
(64 бита) переставляются в соответствии с матрицей
: бит 58 входного блока
становится битом 1, бит 50 ‑ битом 2 и т.д. Эту перестановку можно описать выражением
. Полученная последовательность бит
разделяется на две последовательности:
‑ левые, или старшие, биты,
‑ правые, или младшие, биты ‑ каждая из которых содержит 32 бита.
Затем выполняется итеративный процесс шифрования, состоящий из 16 шагов (циклов). Пусть
‑ результат
‑й итерации:
, где
(первые 32 бита);
(последние 32 бита). Тогда результат
‑й итерации описывается следующими формулами:

Функция
называется функцией шифрования. Ее аргументами являются последовательность
, получаемая на предыдущем шаге итерации, и 48‑битовыйключ
, который является результатом преобразования 64‑битого ключа шифра
. (Подробнее функция шифрования
и алгоритм получения ключа
описаны ниже.)
На последнем шаге итерации получают последовательности
и
(без перестановки местами), которые конкатенируются в 64‑битую последовательность
.
По окончании шифрования осуществляется восстановление позиций бит с помощью матрицы обратной перестановки
(табл. 5.2).
| Таблица 5.2 | |||||||
Обратная перестановка | |||||||
Процесс разшифрования данных является инверсным по отношению к процессу шифрования. Все действия должны быть выполнены в обратном порядке. Это означает, что расшифровываемые данные сначала переставляются в соответствии с матрицей
, а затем над последовательностью бит
выполняются те же действия, что и в процессе шифрования, но в обратном порядке.
Итеративный процесс расшифрования может быть описан следующими формулами:

Таким образом, для процесса расшифрования с переставленным входным блоком
на первой итерации используется ключ
, на второй итерации ‑
и т.д. На 16‑й итерации используется ключ
. На последнем шаге итерации будут получены последовательности
и
, которые конкатенируются в 64‑битую последовательность
. Затем в этой последовательности 64 бита переставляются в соответствии с матрицей
. Результат такого преобразования ‑ исходная последовательность бит (расшифрованное 64‑битовое значение).






