Генератор bcrypt

bcrypt все еще остается одним из самых безопасных вариантов для хранения паролей. Он намеренно медленный, сам создает salt и масштабируется под рост мощности железа через настраиваемый cost parameter. Этот generator создает standards-compliant bcrypt hash из plaintext password, чтобы вы могли seed test user, перенести account между системами или сравнить значения с существующим hash, сохраненным в колонке users.password.

Как hash пароль с bcrypt

  1. 1

    Введите plaintext password

    До 72 bytes: bcrypt silently truncates все, что дальше.

  2. 2

    Выберите cost factor

    12: default в этом генераторе; 10: более быстрый выбор для легаси; 13: самый сильный уровень этого инструмента. Каждый +1 примерно удваивает hash time.

  3. 3

    Генерируется random salt

    16 bytes salt берутся из cryptographic RNG и встраиваются в итоговую hash string.

  4. 4

    Скопируйте hash

    Output: self-describing string вроде `$2b$12$...`, включающая version, cost, salt и digest.

Анатомия bcrypt hash

$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
  |   |  |                      |
  |   |  salt (22 Base64 chars)  digest (31 Base64 chars)
  |   cost (2 digits, 4-31)
  version (2a, 2b, 2y, all bcrypt)

Вся строка занимает 60 characters. Колонки типа VARCHAR(60) или CHAR(60), стандартная schema.

Рекомендации по cost factor

Cost Примерное время на один hash (CPU 2024) Применение
10 ~80 ms Прежний default, все еще приемлемо
12 ~300 ms Текущая рекомендуемая база
13 ~600 ms Приложения с повышенной безопасностью
14 ~1.2 s Вне диапазона этого инструмента (максимум 13)

Каждый increment удваивает work factor. Если login latency ниже 500 ms критична, оставайтесь на 10-12.

Version byte: 2a vs 2b vs 2y

  • $2a$, оригинальная specification 1999 года. Большинство libraries выпускают 2a hashes.
  • $2b$, ревизия 2014 года, исправившая truncation bug в crypt_blowfish. Предпочтительно для новых hashes.
  • $2y$, PHP-specific tag, функционально эквивалентный $2b$.

Все три variants verify друг против друга; отличается только tag в hash string.

От чего защищает bcrypt

  • Rainbow tables, уникальный per-hash salt ломает precomputed lookups.
  • GPU/ASIC cracking, Blowfish key schedule memory-bound и недружелюбен к GPU. Не так GPU-hostile, как Argon2, но все равно замедляет brute force.
  • Database leaks, plaintext невозможно восстановить из hash без brute force.

От чего bcrypt НЕ защищает: слабые пароли (используйте minimum length и проверку по breach lists), credential stuffing (используйте second factor), phishing.

Лимит 72-byte

bcrypt использует только первые 72 bytes пароля. Более длинные inputs silently truncated, по этой же причине многие libraries теперь рекомендуют pre-hashing password через SHA-256 перед передачей в bcrypt. У современных альтернатив (Argon2, scrypt) такого лимита нет.

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

Да, для хранения паролей при cost ≥ 12. OWASP все еще относит его к acceptable algorithms. Argon2id, предпочтительный выбор для новых систем, но миграция legacy bcrypt hashes обычно не является срочной задачей.

Потому что salt генерируется randomly для каждого hash. Verification берет salt из сохраненного hash, снова hashes submitted password с ним и сравнивает.

Большинство libraries этого не предоставляет, и не зря, predictable salts убивают смысл. Используйте salt, сгенерированный library; это secure path.

Каждый +1 примерно удваивает время hash, поэтому cost 13 занимает примерно в 8 раз больше времени, чем cost 10. Оставайтесь в диапазоне 10-12, если приложение действительно не требует дополнительной прочности.

Сопутствующие инструменты

Кодировщик и декодировщик Base58

Кодируйте текст UTF-8 или шестнадцатеричные байты и безопасно декодируйте Base58 с алфавитом Bitcoin, Ripple или Flickr.

Кодировщик файлов Base64

Кодируйте любой файл (PDF, ZIP, изображение, исполняемый файл) в текст Base64 для встраивания в JSON, письма, YAML или data URI. Работает локально в браузере, без загрузки на сервер.

Кодировщик шифра A1Z26

Кодируйте текст шифром A1Z26 (A=1, B=2, ... Z=26) или декодируйте числовую последовательность обратно в буквы, выбрав разделитель.

Кодировщик и декодировщик Base85

Кодируйте и декодируйте Base85 в варианте Adobe Ascii85, который используется в файлах PostScript и PDF. Компактнее Base64 для двоичных данных.

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

Шифруйте и расшифровывайте текст низкого риска с AES-шифрами OpenSSL. Парольная фраза хэшируется SHA-256, а Base64-вывод содержит IV плюс шифротекст.

Генератор SSL-сертификатов

Создайте самоподписанный сертификат SSL/TLS и закрытый ключ RSA полностью в браузере. Свои Common Name, SAN и срок действия, экспорт в PEM.

Инструмент доступен на других языках