Bcrypt: хеш и проверка
Хешируйте пароли bcrypt и сверяйте хеши с открытым текстом
Об этом инструменте
Хэшируйте пароль с помощью bcrypt с выбранным фактором стоимости или сверяйте открытый текст с существующим хэшем — и то и другое целиком в браузере, что именно и нужно, когда тестируемая вещь — пароль. Инспектор хэшей вдобавок разбирает любой bcrypt-хэш на версию, стоимость и соль.
Bcrypt остаётся достойным выбором для хранения паролей, потому что он намеренно медленный и солится для каждого пароля: фактор стоимости удваивает работу с каждым шагом, так что стоимость 12 означает 4096 итераций инициализации базового шифра. Замер времени показывает, сколько занимает выбранная стоимость, делая компромисс между безопасностью и задержкой осязаемым.
Проверка — более частая повседневная нужда: подтвердить, что хэш в базе данных соответствует известному паролю, не поднимая код приложения. Вставьте оба — получите да или нет.
Частые вопросы
- Какой фактор стоимости использовать в продакшене?
- Классический совет: настолько высокий, насколько позволяет ваш бюджет задержки входа, — сегодня обычно 10–13. Ориентируйтесь на 100–300 мс на хэш на продакшен-оборудовании. JavaScript в браузере медленнее нативного кода, так что показанное здесь время — верхняя граница для ваших серверов.
- Почему один и тот же пароль каждый раз даёт разный хэш?
- Для каждого хэша генерируется случайная 16-байтовая соль, которая хранится внутри самой строки хэша. Так и задумано — одинаковые пароли получают разные хэши, что обесценивает заранее вычисленные радужные таблицы. Проверка считывает соль обратно из хэша — поэтому сравнение и работает.
- Что означают части bcrypt-хэша?
- $2b$12$ + 53 символа: 2b — версия алгоритма, 12 — стоимость (2^12 итераций), следующие 22 символа — соль, финальный 31 — дайджест, всё в собственном base64-алфавите bcrypt. Инспектор под инструментом разбирает так любой хэш.
- Всё ещё ли bcrypt рекомендуется вместо Argon2?
- Argon2id — сегодняшний первый выбор для новых систем (устойчивость к перебору на GPU за счёт требований к памяти). Bcrypt остаётся приемлемым и вездесущим — практический совет: не мигрируйте работающее bcrypt-хранилище в панике, но для новых проектов выбирайте Argon2id. Оба на порядки лучше быстрых хэшей вроде SHA-256.