Криптографический алгоритм Blowfish

From CryptoWiki
Revision as of 15:46, 6 December 2013 by 13-01-SoldatovaEP (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Blowfish – это криптографический алгоритм, разработанный в 1993 году Брюсом Шнайером (Bruce Schneier).

Blowfish представляет собой 64-битовый блочный шифр с ключом переменной длины. Алгоритм состоит из двух частей: развертывание ключа и шифрование данных.

Развертывание ключа преобразует ключ длиной до 448 битов в несколько массивов подключей, общим объемом 4168 байтов.

Шифрование данных состоит из простой функции, последовательно выполняемой 16 раз. Каждый этап состоит из зависимой от ключа перестановки и зависимой от ключа и данных подстановки. Используются только сложения и XOR 32-битовых слов. Единственными дополнительными операциями на каждом этапе являются четыре извлечения данных из индексированного массива.

В Blowfish используется много подключей. Они должны быть рассчитаны до начала шифрования или дешифрования.

P-массив состоит из 18 32-битовых подключей: P1, P2, … , P18.

Каждый из четырех 32-битовых S-блоков содержит 256 элементов:

Blow1.png

Blow2.png

Метод вычисления подключей

Blowfish является сетью Фейстела (Feistel), состоящий из 16 этапов (см. рисунок Blowfish). На вход подается 64-битовый элемент данных X.

Рисунок. Blowfish.

Blow3.png