Назад до інструментів

Генератор і перевірка хешів 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, 1999

Навмисно повільний, але покладається лише на процесорний час і фіксовані 4 КБ пам'яті. GPU та FPGA розпаралелюють його набагато краще, ніж новіші схеми. Це досі цілком гідний вибір, підтримуваний буквально всюди, а його найнесподіванішою гострою гранню є ліміт пароля в 72 байти.

scrypt
Складний для пам'яті, 2009

Додає налаштовувану вартість пам'яті, тож зловмиснику потрібна оперативна пам'ять на кожну спробу, а не лише ядра. Розпаралелити дешево складніше, ніж bcrypt.

Argon2id
Поточна рекомендація

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

Доказ

Перевірте цю сторінку за опублікованими тестовими векторами

Інструмент хешування, який просить довіри, має бути перевірюваним. Це еталонні вектори bcrypt, які використовують реалізації на основі OpenBSD; сторінка перераховує кожен із власної солі й порівнює символ за символом, а потім хешує й повторно перевіряє одноразовий пароль на двох значеннях cost.

У пакеті виконується 6 опублікованих векторів плюс два повні цикли.

Керуєте власним ігровим сервером?

Ігрові сервери Wespner із захистом від DDoS, дисками NVMe та активацією за кілька хвилин.

Переглянути хостинг