Головна |
Для всіх варіантів ключ для шифрування однаковий: password. Ці вісім символів також представляємо у двійковому вигляді за таблицею ASCII:
Здійснюємо перестановку PC-1. За наступною таблицею:
Кількість елементів таблиці 56. Тобто в результаті отримуємо вектор у 56 біт. Відсутні біти 8-й, 16-й, 24-й, 32-й, 40-й, 48-й, 56-й, 64-й. Ці біти ніякої участі в процесі шифрування не приймають і використовуються для контролю парності. Правило використання даної таблиці: у позицію 1 записують 57-й біт вхідного блоку, у позицію 2 записують 49 -й біт, у позицію 3 записують 41-й біт і т.д.
Результат виконання перестановки PC-1:
00000000 11011111 11011111 01010101 11001011 00000000 00001101
Розбиваємо цю послідовність біт на дві частина по 28 біт.
Ліва частина С0:
00000000 11011111 11011111 0101
Права частина D0:
0101 11001011 00000000 00001101
Виконуємо циклічний зсув обох частин на 1 біт вліво:
Отримуємо С1:
00000001 10111111 10111110 1010
Отримуємо D1:
1011 10010110 00000000 00011010
З'єднуємо обидві частини:
00000001 10111111 10111110 10101011 10010110 00000000 00011010
До цієї послідовності застосовуємо перестановку PC-2 за наступною таблицею:
В таблиці 48 комірок. Результатом виконання цієї перестановки буде 48 бітовий вектор. Правила виконання перестановки: у позицію 1 записують 14-й біт вхідного блоку, у позицію 2 записують 17 -й біт, у позицію 3 записують 11-й біт і т.д.
В результаті отримуємо ключ раунду:
11100000 10101110 01101110 10011101 11011110 01011100
Функція раунду.
Входом даної функції є права частина R (32 біти) вхідного блоку:
00000000 11111111 01000011 01010111
Застосовуємо до R функцію розширення Е за наступною таблицею:
В таблиці 48 комірок. Результатом виконання цієї перестановки буде 48 бітовий вектор. Правила виконання перестановки: у позицію 1 записують 32-й біт вхідного блоку, у позицію 2 записують 1 -й біт, у позицію 3 записують 2-й біт і т.д.
В результаті маємо 48 бітовий вектор:
10000000 00010111 11111110 10100000 01101010 10101110
Даний вектор і ключ раунду порозрядно складаються за модулем 2:
01100000 10111001 10010000 00111101 10110100 11110010
Ця 48 бітна послідовність розбивається на 8 блоків по 6 біт кожний:
011000 001011 100110 010000 001111 011011 010011 110010
Кожен з блоків подається на вхід відповідного S-блоку. Робота S-блоків описується наступними таблицями:
S1-блок
S2-блок
S3-блок
S4-блок
S5-блок
S6-блок
S7-блок
S8-блок
Ці S-блоки функціонують за наступним правилом. Входом є 6 бітний вектор. Перший та останній біти визначають номер рядка (нумерація з 0). Середні чотири біти - номер стовпчика (нумерація з 0). Десяткове число у відповідній комірці записується у вигляді 4 бітного двійкового числа, що і є виходом S-блоку.
Подані на вхід 6 бітні послідовності після обробки на відповідному S-блоці перетворюються на наступні 4 бітні вектори:
0101 0010 1001 0001 0001 1011 0011 1101
Ці 32 біти подаються на вхід перестановки Р:
В таблиці 32 комірки. Результатом виконання цієї перестановки буде 32 бітовий вектор. Правила виконання перестановки: у позицію 1 записують 16-й біт вхідного блоку, у позицію 2 записують 7 -й біт, у позицію 3 записують 20-й біт і т.д.
В результаті отримуємо значення функції раунду у вигляді 32 бітового вектора:
11111110 00100000 10101101 00100010
Значення функції раунду порозрядно складається по модулю 2 з лівою частиною вхідного блоку L:
00010001 00101100 01110111 00010101
Отриманий 32 бітний вектор є правою частиною 64 бітного вектора. Лівою частиною буде вектор R (тобто праві 32 біти 64 бітної послідовності на початку раунда).
Отже, остаточний результат раунду:
00000000 11111111 01000011 01010111 00010001 00101100 01110111 00010101
В контрольній роботі для спрощення виконується лише один раунд. Тому отриману послідовність вважаємо результатом 16 раундів.