Шифрование и расшифровка Blowfish
Шифруйте и расшифровывайте Blowfish (ключи 4–56 байт) в режимах CBC, CFB, OFB или ECB. Парольная фраза OpenSSL bf-cbc или сырой hex-ключ и IV. Бесплатно, в браузере.
Результат — формат 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: шифрование и расшифровка
- Выберите вкладку Зашифровать или Расшифровать.
- Выберите Парольная фраза (совместимо с OpenSSL) и введите парольную фразу либо Сырой ключ + IV (hex) с ключом 4–56 байт и 8-байтовым IV.
- Выберите Режим и Дополнение (CBC + PKCS#7 соответствует OpenSSL bf-cbc).
- Введите открытый текст или шифротекст, нажмите кнопку и скопируйте результат.
Пример
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.