за моду-лем 2w, множення за модулем 2W (позначають символом х), циклічний зсув ліворуч на задану кількість позицій.
Дешифрування.
Вхід: підблоки А, В, С, D по w бітів кожний. Кількість виконуваних циклів дорівнює 2. Набір підключівналічує 2г + 4 w-бітових слів.
Вихід: явний текст А, В, С, D.
де віднімання за модулем 2W позначено символомозначає циклічний зсув
праворуч послідовності X на К позицій.
Утворення підключів.
Вхід: множина L[0], L[1], ..., L[с-1], утворена з b-байтового головного ключа, де L[О] - перший байт головного ключа, L[1] - другий байт головного ключа і так далі, та числа(ці числа отримані з двійкового розкладу чисел е-2 та ф-1, Кількість виконуваних циклів дорівнює r.
Вихід: набір підключівКожен із підключів є w-бітовим словом.
Алгоритм BLOWFISH
Алгоритм спеціально призначений для застосування у мікропроцесорах зі знач-ною кількістю розрядів.
Шифр Blowfish є ітеративним блоковим шифром з 64-бітовим розміром блока й 56-байтовим ключем. Охоплює 16 ітерацій шифрування та 521 ітерацію утворення під-ключів. Головними операціями цього алгоритму є: підстановка, додавання за модулем 2, додавання за модулем 232 (позначають знаком +).
Під час шифрування алгоритмом Blowfish використовують 18 підключів K1, ... К18, кожен завдовжки 32 біти, й чотири S-блоки підстановок. Кожен з 5-блоків - це таблиця з 256 слів довжини 32 біти:
; 5-блок перетворює вхідний 8-бітовий аргумент у 32-бітовий результат. Аргумент у цьому разі є як адреса 32-бітового слова в таблиці. Під-ключі та S-блоки утворюють із базового ключа за допомогою самого алгоритму шифрування.
Шифрування. 64-бітовий вхідний блок ділять на два 32-бітові підблоки: лівий і правий. Під час кожного циклу і = 1,2,..., 16 виконують такі операції:
де Z= (а, b, с, d), причому підблоки а, b, с та d довжиною 8 бітів кожен є, відповідно, адресами елементів підстановки
обчислюють 32-бітові проміжні значення (4- 8 = 32)
відшукують значення лівого й правого підблоків
Під час останнього циклу (і - 16) цю операцію не виконують.
Результат перетворення в 16-му циклі піддається кінцевому перетворенню:
а сукупність вихідних бітівдає блок шифрограми.
Дешифрування відбувається для такої самої кількості циклів за відповідно змі-неної послідовності підключів: