/>
Потім виконується шифрування, що складається з 16 ітерацій. Результат i-й ітерації описується такими формулами:
L (i)=R (i - 1)
R (i)=L (i - 1) xor f (R (i - 1), K (i))
де xor - операція виключає Або.
Функція f називається функцією шифрування. Її аргументи - це 32-бітова послідовність R (i - 1), отримана на (i - 1) - ой ітерації, і 48-бітову ключ K (i), який є результатом перетворення 64-бітового ключа K. Детально функція шифрування і алгоритм отримання ключів К (i) описані нижче. На 16-й ітерації отримують послідовності R (16) і L (16) (без перестановки), які конкатенуються в 64-бітову послідовність R (16) L (16). Потім позиції бітів цієї послідовності переставляють відповідно до матриці IP - 1 (таблиця 1.2).
Таблиця 1.2 - Матриця зворотного перестановки IP - 1
08 48 16 56 24 64 32
07 47 15 55 23 63 31
06 46 14 54 22 62 30
05 45 13 53 21 61 29
04 44 12 52 20 60 28
03 43 11 51 19 59 27
02 42 10 50 18 58 26
01 41 09 49 17 57 25
Матриці IP - 1 і IP співвідносяться наступним чином: значення 1-го елемента матриці IP - 1 дорівнює 40, а значення 40-го елемента матриці IP одно 1,
значення 2-го елемента матриці IP - 1 одно 8, а значення 8-го елемента матриці IP одно 2 і т.д. Процес розшифрування даних є інверсним по відношенню до процесу шифрування. Всі дії повинні бути виконані в зворотному порядку. Це означає, що розшифровуються дані спочатку переставляються відповідно до матриці IP - 1, а потім над послідовністю біт R (16) L (16) виконуються ті ж дії, що і в процесі шифрування, але в зворотному порядку. Ітеративний процес розшифрування може бути описаний такими формулами:
R (i - 1)=L (i), i=1, 2, ..., 16;
L (i - 1)=R (i) xor f (L (i), K (i)), i=1, 2, ..., 16.
На 16-й ітерації отримують послідовності L (0) і R (0), які конкатенуються в 64-бітову послідовність L (0) R (0). Потім позиції бітів цієї послідовності переставляють відповідно до матриці IP. Результат такої перестановки - вихідна 64-бітова послідовність. Тепер розглянемо функцію шифрування f (R (i - 1), K (i)). Схематично вона показана на малюнку 6.
Малюнок 6 - Обчислення функції f (R (i - 1), K (i))
Для обчислення значення функції f використовуються наступні функції-матриці:
· Е - розширення 32-бітової послідовності до 48-бітової,
· S1, S2, ..., S8 - перетворення 6-бітового блоку в 4-бітовий,
· Р - перестановка біт в 32-бітової послідовності.
Функція розширення Е визначається таблицею 1.3. Відповідно з цією таблицею перші 3 біта Е (R (i - 1)) - це біти 32, 1 і 2, а останні - 31, 32 і 1.
Таблиця 1.3 - Функція розширення E
01 02 03 04 05
05 06 07 08 09
09 10 11 12 13
13 14 15 16 17
17 18 19 20 21
21 22 23 24 25 ...