Генератор и проверка хэшей Bcrypt
Превратите пароль в хэш bcrypt $2b$ или проверьте пароль по уже имеющемуся хэшу. Хэширование выполняется в Web Worker внутри вашего браузера — ничего из введённого никуда не отправляется.
Не вставляйте реальный продакшен-пароль ни в один онлайн-инструмент — включая этот.
Ввод
Пароль и cost
Для каждого хэша берётся новая 16-байтная соль, поэтому один и тот же пароль каждый раз даёт разный хэш. В этом и смысл соли, это не баг.
Cost 10 означает 2^10 = 1,024 раундов настройки ключа. Каждый шаг вверх удваивает работу — и для того, кто перебирает украденный файл паролей, и для вашего собственного сервера при каждом входе. Большинство продакшен-систем используют значение от 10 до 12.
Все три префикса дают идентичные байты хэша для паролей короче 72 байт — различается только метка. Встроенный crypt() в PHP не распознаёт $2b$, поэтому хэш $2b$ молча провалит password_verify(). Для PHP выбирайте $2y$.
Хэширование выполняется в Web Worker внутри этой вкладки. Пароль никогда не отправляется в Wespner или кому-либо ещё — отправлять его попросту некуда.
Результат
Хэш bcrypt
Нажмите «Сгенерировать хэш».
Стоимость, измеренная здесь
Во что обходится эта настройка
Оценка: один хэш замеряется в этой вкладке при cost 8, остальные значения cost экстраполируются от него удвоением. Точное число зависит от вашего железа и браузера.
Эти цифры получены в одном потоке JavaScript. Реальный атакующий запускает нативный код на стойке GPU и работает на порядки быстрее — именно поэтому cost factor должен быть неудобным, а не комфортным. Тот же ползунок определяет, сколько CPU сжигает каждый вход в ваш собственный аккаунт.
Чтение строки
Что значат эти 60 символов
$2b$12$LQv3c1yqBWVHxkd0LHAkCOYUtYgBuLIjrsGrDUgYqZbY7d0RfPbtq
Оба блока используют собственный алфавит base64 от bcrypt, который начинается с ./ и ставит цифры в конец — это не стандартный base64, и декодирование его как обычного даёт неверные байты. Это, плюс разбиение 22/31, — быстрый способ проверить, действительно ли строка является хэшем bcrypt, а не просто похожа на него.
Выбор алгоритма
bcrypt, scrypt или Argon2?
Этот инструмент намеренно работает только с bcrypt. Вот когда это правильный выбор, а когда нет.
Медленный по замыслу, но опирается только на процессорное время и фиксированные 4 КБ памяти. GPU и FPGA распараллеливают его гораздо лучше, чем более новые схемы. Это по-прежнему вполне достойный выбор, он поддерживается буквально везде, а самый неожиданный острый угол — лимит пароля в 72 байта.
Добавляет настраиваемую стоимость по памяти, поэтому атакующему нужна оперативная память на каждую попытку, а не только ядра. Распараллелить дёшево сложнее, чем bcrypt.
Победитель Password Hashing Competition 2015 года и то, что сейчас рекомендует OWASP для новых систем: отдельные ручки для времени, памяти и параллелизма, а вариант id устойчив и к GPU, и к атакам по побочным каналам. Если вы начинаете с нуля и платформа это поддерживает — используйте его. Если вы поддерживаете систему, которая уже хранит хэши $2y$, bcrypt с разумным cost — это не аврал, перехэшируйте при следующем входе.
Доказательство
Проверьте эту страницу по опубликованным тестовым векторам
Инструмент хэширования, которому просят доверять, должен быть проверяемым. Это эталонные векторы bcrypt, используемые реализациями на базе OpenBSD; страница пересчитывает каждый из них с его собственной солью и сравнивает посимвольно, а затем хэширует и повторно проверяет одноразовый пароль при двух значениях cost.
Пакет запускает 6 опубликованных векторов плюс две проверки туда-обратно.
Управляете собственным игровым сервером?
Игровые серверы Wespner с защитой от DDoS, дисками NVMe и активацией за несколько минут.