Генерация подключей

Подключи вычисляются с использованием самого алгоритма Blowfish.

1. Инициализировать первый Р -массив и четыре S-boxes фиксированной строкой.

2. Выполнить операцию XOR P1 с первыми 32 битами ключа, операцию XOR P2 со вторыми 32 битами ключа и т.д. Повторять цикл до тех пор, пока весь Р-массив не будет побитово сложен со всеми битами ключа. Для коротких ключей выполняется конкатенация ключа с самим собой.

3. Зашифровать нулевую строку алгоритмом Blowfish, используя подключи, описанные в пунктах (1) и (2).

4. Заменить Р1 и Р2 выходом, полученным на шаге (3).

5. Зашифровать выход шага (3), используя алгоритм Blowfish с модифицированными подключами.

6. Заменить Р3 и Р4 выходом, полученным на шаге (5).

7. Продолжить процесс, заменяя все элементы Р-массива, а затем все четыре S-boxes, выходами соответствующим образом модифицированного алгоритма Blowfish.

Для создания всех подключей требуется 521 итерация.