Назад к инструментам

Генератор и проверка хэшей Bcrypt

Превратите пароль в хэш bcrypt $2b$ или проверьте пароль по уже имеющемуся хэшу. Хэширование выполняется в Web Worker внутри вашего браузера — ничего из введённого никуда не отправляется.

Ввод

Пароль и cost

Для каждого хэша берётся новая 16-байтная соль, поэтому один и тот же пароль каждый раз даёт разный хэш. В этом и смысл соли, это не баг.

10
4 · быстро14 · медленно

Cost 10 означает 2^10 = 1,024 раундов настройки ключа. Каждый шаг вверх удваивает работу — и для того, кто перебирает украденный файл паролей, и для вашего собственного сервера при каждом входе. Большинство продакшен-систем используют значение от 10 до 12.

Все три префикса дают идентичные байты хэша для паролей короче 72 байт — различается только метка. Встроенный crypt() в PHP не распознаёт $2b$, поэтому хэш $2b$ молча провалит password_verify(). Для PHP выбирайте $2y$.

Хэширование выполняется в Web Worker внутри этой вкладки. Пароль никогда не отправляется в Wespner или кому-либо ещё — отправлять его попросту некуда.

Результат

Хэш bcrypt

Нажмите «Сгенерировать хэш».

Стоимость, измеренная здесь

Во что обходится эта настройка

Оценка: один хэш замеряется в этой вкладке при cost 8, остальные значения cost экстраполируются от него удвоением. Точное число зависит от вашего железа и браузера.

Одна проверка здесь
измерение…
Попыток в секунду
список из 14,344,391 слов

Эти цифры получены в одном потоке JavaScript. Реальный атакующий запускает нативный код на стойке GPU и работает на порядки быстрее — именно поэтому cost factor должен быть неудобным, а не комфортным. Тот же ползунок определяет, сколько CPU сжигает каждый вход в ваш собственный аккаунт.

Чтение строки

Что значат эти 60 символов

$2b$12$LQv3c1yqBWVHxkd0LHAkCOYUtYgBuLIjrsGrDUgYqZbY7d0RfPbtq

версия
$2b$
cost
12 → 2^12 = 4,096 раундов
соль (22)
LQv3c1yqBWVHxkd0LHAkCO
хэш (31)
YUtYgBuLIjrsGrDUgYqZbY7d0RfPbtq

Оба блока используют собственный алфавит base64 от bcrypt, который начинается с ./ и ставит цифры в конец — это не стандартный base64, и декодирование его как обычного даёт неверные байты. Это, плюс разбиение 22/31, — быстрый способ проверить, действительно ли строка является хэшем bcrypt, а не просто похожа на него.

Выбор алгоритма

bcrypt, scrypt или Argon2?

Этот инструмент намеренно работает только с bcrypt. Вот когда это правильный выбор, а когда нет.

bcrypt
CPU-hard, 1999

Медленный по замыслу, но опирается только на процессорное время и фиксированные 4 КБ памяти. GPU и FPGA распараллеливают его гораздо лучше, чем более новые схемы. Это по-прежнему вполне достойный выбор, он поддерживается буквально везде, а самый неожиданный острый угол — лимит пароля в 72 байта.

scrypt
Memory-hard, 2009

Добавляет настраиваемую стоимость по памяти, поэтому атакующему нужна оперативная память на каждую попытку, а не только ядра. Распараллелить дёшево сложнее, чем bcrypt.

Argon2id
Текущая рекомендация

Победитель Password Hashing Competition 2015 года и то, что сейчас рекомендует OWASP для новых систем: отдельные ручки для времени, памяти и параллелизма, а вариант id устойчив и к GPU, и к атакам по побочным каналам. Если вы начинаете с нуля и платформа это поддерживает — используйте его. Если вы поддерживаете систему, которая уже хранит хэши $2y$, bcrypt с разумным cost — это не аврал, перехэшируйте при следующем входе.

Доказательство

Проверьте эту страницу по опубликованным тестовым векторам

Инструмент хэширования, которому просят доверять, должен быть проверяемым. Это эталонные векторы bcrypt, используемые реализациями на базе OpenBSD; страница пересчитывает каждый из них с его собственной солью и сравнивает посимвольно, а затем хэширует и повторно проверяет одноразовый пароль при двух значениях cost.

Пакет запускает 6 опубликованных векторов плюс две проверки туда-обратно.

Управляете собственным игровым сервером?

Игровые серверы Wespner с защитой от DDoS, дисками NVMe и активацией за несколько минут.

Посмотреть хостинг