Курсовая работа: Программная реализация алгоритма шифрования DES. Режим ECB
Затем выполняется итеративный процесс шифрования, состоящий из 16 циклов. Пусть Ti -результат I-й итерации:
Ti =Li Ri ,
где Li =t1 t2… t32 ; Ri =t33 t34 …t64. Тогда результат I-й итерации описывается следующими формулами:
Li =Ri-1 , i=1,2,…,16;
Ri =Li-1 xor f(Ri-1 ,Ki ), i=1,2,…,16.
Функции fназывается функцией шифрования. Ее аргументами являются последовательность Ri -1, получаемая на предыдущем шаге итерации, и 48-битовый ключ Ki , который является результатом преобразования 64-битового ключа шифра К.
На последнем шаге итерации получают последовательность R16 и L16 , который конкатенируются в 64-битовую последовательность R16 L16 .
По окончании шифрования осуществляется восстановление позиций битов с помощью матрицы обратной перестановки IP-1 (таблица 2).
Таблица 2
Матрица обратной перестановки IP-1
40 08 48 16 56 24 64 32
39 07 47 15 55 23 63 31
38 06 46 14 54 22 62 30
37 05 45 13 53 21 61 29
36 04 44 12 52 20 60 28
35 03 43 11 51 19 59 27
34 02 42 10 50 18 58 26
33 01 41 09 49 17 57 25
Процесс расшифрования данных является инверсным по отношению к процессу шифрования. Все действия должны быть выполнены в обратном порядке. Это означает, что расшифровываемые данные сначала переставляются в соответствии с матрицей IP-1 , а затем над последовательностью битов R16 L16 выполняются те же действия, что и в процессе шифрования, но в обратном порядке.
Итеративный процесс расшифрования может быть описан следующими формулами:
Ri-1 = Li , i = 1, 2, ..., 16;Li-1 = Ri xor f(Li , Ki ), i = 1, 2, ..., 16 .
На 16-й итерации получают последовательности L0 и R0 , которые конкатенируют в 64-битовую последовательность L0 R0 .
Затем позиции битов этой последовательности переставляют в соответствии с матрицей IP. Результат такой перестановки - исходная 64-битовая последовательность.
Теперь рассмотрим функцию шифрования f(Ri-1, Ki ). Она показана на рисунке 3.
Для вычисления значения функции fиспользуются:
- функция Е (расширение 32 бит до 48);
- функция S1,S2,…,S8 (преобразование 6-битового числа в 4-битовое);
- функция Р (перестановка битов в 32-битовой последовательности).
Рисунок 3 - Вычисление функции f(R(i-1), K(i))