25 26 27 28 29
29 30 31 32 01
Результат функції Е (R (i - 1)) є 48-бітова послідовність, яка складається по модулю 2 (операція xor) з 48-бітовим ключем К (i). Виходить 48-бітова послідовність, яка розбивається на вісім 6-бітових блоків B (1) B (2) B (3) B (4) B (5) B (6) B (7) B (8). Тобто: E (R (i - 1)) xor K (i)=B (1) B (2) ... B (8).
Функції S1, S2, ..., S8 визначаються таблиці 1.4.
Таблиця 1.4 - Функції перетворення S1, S2, ..., S8
До таблиці 1.4. потрібні додаткові пояснення. Нехай на вхід функції-матриці Sj надходить 6-бітовий блок B (j)=b1b2b3b4b5b6, тоді двухбітовий число b1b6 вказує номер рядка матриці, а b2b3b4b5 - номер стовпця. Результатом Sj (B (j)) буде 4-бітовий елемент, розташований на перетині зазначених рядка і стовпчика. Наприклад, В (1)=011011. Тоді S1 (В (1)) розташований на перетині рядка 1 і шпальти 13. У стовпці 13 рядка 1 задано значення 5. Значить, S1 (011011)=0101. Застосувавши операцію вибору до кожного з 6-бітових блоків B (1), B (2), ..., B (8), отримуємо 32-бітову послідовність S1 (B (1)) S2 (B (2)) S3 (B ( 3)) ... S8 (B (8)). Нарешті, для отримання результату функції шифрування треба переставити біти цієї послідовності. Для цього застосовується функція перестановки P (таблиця 1.5). У вхідній послідовності біти переставляється так, щоб біт 16 став бітом 1, а біт 7 - бітом 2 і т.д.
Таблиця 1.5 - Функція перестановки P
16 липня 20 21
28 грудня 17
15 23 26
18 31 жовтня
24 серпня 14
27 9 березня
13 30 червня
11 25 квітня
Таким чином,
f (R (i - 1), K (i))=P (S1 (B (1)), ... S8 (B (8)))
Щоб завершити опис алгоритму шифрування даних, залишилося привести алгоритм отримання 48-бітових ключів К (i), i=1 ... 16. На кожній ітерації використовується нове значення ключа K (i), яке обчислюється з початкового ключа K. K являє собою 64-бітову блок з вісьмома бітами контролю по парності, розташованими в позиціях 8,16,24,32,40,48,56, 64. Для видалення контрольних бітів і перестановки інших використовується функція G початкової підготовки ключа (таблиця 1.6).
Таблиця 1.6 - Матриця G початкової підготовки ключа
49 41 33 25 17 09
58 50 42 34 26 18
02 59 51 43 35 27
11 03 60 52 44 36
55 47 39 31 23 15
62 54 46 38 30 22
06 61 53 45 37 29
13 05 28 20 12 04
Результат перетворення G (K) розбивається на два 28-бітових блоку C (0) і D (0), причому C (0) складатиметься з бітів 57, 49, ..., 44, 36 ключа K, а D (0) складатиметься з бітів 63, 55, ..., 12, 4 ключа K. Після визначення C (0) і D (0) рекурсивно визначаються C (i) і D (i), i=1 ... 16.
Для цього застосовують циклічний зсув вліво на один або два біти в залежності від номера ітерації, як показано в таблиці 1.7.