Шифрование и расшифровка Blowfish

Шифруйте и расшифровывайте Blowfish (ключи 4–56 байт) в режимах CBC, CFB, OFB или ECB. Парольная фраза OpenSSL bf-cbc или сырой hex-ключ и IV. Бесплатно, в браузере.

Blowfish — устаревший шифр: из-за 64-битного блока длинные сообщения уязвимы к атаке «дней рождения» (Sweet32). Для новых данных используйте AES.

Результат — формат OpenSSL «Salted__» в Base64: случайная соль из 8 байт, затем шифротекст. Ключ и IV выводятся из парольной фразы и соли, поэтому один и тот же текст каждый раз шифруется по-разному. Эквивалентная команда:

openssl enc -bf-cbc -md md5 -a -A -provider legacy -provider default -k '…'

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

Что такое Blowfish: шифрование и расшифровка?

Шифрует и расшифровывает данные алгоритмом Blowfish — блочным шифром Брюса Шнайера 1993 года с 64-битным блоком и ключом переменной длины (4–56 байт). Вкладками Зашифровать / Расшифровать переключается направление, так что можно расшифровать и собственный результат, и данные из bf-cbc OpenSSL.

Как пользоваться Blowfish: шифрование и расшифровка

  1. Выберите вкладку Зашифровать или Расшифровать.
  2. Выберите Парольная фраза (совместимо с OpenSSL) и введите парольную фразу либо Сырой ключ + IV (hex) с ключом 4–56 байт и 8-байтовым IV.
  3. Выберите Режим и Дополнение (CBC + PKCS#7 соответствует OpenSSL bf-cbc).
  4. Введите открытый текст или шифротекст, нажмите кнопку и скопируйте результат.

Пример

Ввод
Raw key 0000000000000000, mode ECB, padding None, hex plaintext 0000000000000000
Вывод
4ef997456198dd78

Первый тестовый вектор Blowfish от Шнайера, кодировка результата Hex.

Когда использовать Blowfish: шифрование и расшифровка

Используйте, чтобы прочитать или создать данные для устаревшего ПО с Blowfish или получить тестовые векторы. Из-за 64-битного блока он не подходит для больших объёмов данных (Sweet32). В новых разработках используйте AES. Учтите: хеши паролей bcrypt основаны на Blowfish, но не являются шифрованными данными — расшифровать их здесь нельзя.

Как работает Blowfish: шифрование и расшифровка

Blowfish разворачивает ключ в 18 элементов P-массива и четыре S-блока по 256 элементов, затем выполняет 16 раундов сети Фейстеля над каждым 8-байтовым блоком. Ключи любой длины от 4 до 56 байт циклически побайтно накладываются на P-массив, как в эталонной реализации (проверено векторами Эрика Янга для ключей переменной длины). Режим парольной фразы выводит 16-байтовый ключ и 8-байтовый IV из неё и случайной соли (EVP_BytesToKey MD5 или PBKDF2-SHA256) и записывает формат OpenSSL Salted__, совместимый с openssl enc -bf-cbc. CBC/ECB используют дополнение PKCS#7, которое проверяется при расшифровке.

Распространенные Случаи Использования

  • Расшифровать вывод openssl enc -bf-cbc
  • Создать тестовые векторы Blowfish с ключами необычной длины
  • Обеспечить совместимость со старым кодом PHP mcrypt или Java Blowfish
  • Объяснить шифры Фейстеля на классическом алгоритме

Примечание по Безопасности

Blowfish не взломан, но его 64-битный блок уязвим для атак «дней рождения» после нескольких гигабайт под одним ключом. Для новых данных предпочитайте AES.

Часто Задаваемые Вопросы

Можно ли расшифровывать на этой странице?

Да — откройте вкладку Расшифровать, введите ту же парольную фразу или ключ/IV и настройки и вставьте шифротекст.

Может ли он расшифровать хеш bcrypt?

Нет. bcrypt — односторонний хеш пароля, лишь использующий Blowfish внутри; его нельзя расшифровать, только проверить.

Совместим ли результат с OpenSSL?

Да. В режиме парольной фразы результат совпадает с выводом openssl enc -bf-cbc -md md5 -a -A -k <passphrase> (EVP_BytesToKey с MD5) или -pbkdf2 -iter N, если выбран PBKDF2-HMAC-SHA256. Для расшифровки добавьте -d. Подходящая команда показана под полем парольной фразы.

Какая длина ключа допустима?

От 4 до 56 байт (от 8 до 112 hex-символов). Режим парольной фразы всегда выводит 128-битный ключ, как OpenSSL.

Другие категории