Pack Camo

Генератор хешу bcrypt і Argon2

Хешуйте пароль через bcrypt або Argon2id чи перевірте його за збереженим хешем.

Усе виконується локально — нічого не надсилається на сервер.

28 байтів

Тут з’явиться закодований хеш.

Хешуйте пароль через bcrypt або Argon2 чи звірте його зі збереженим хешем

Цей генератор хешів паролів створює хеші bcrypt (<code>$2b$</code>, cost від 4 до 15) та хеші Argon2id, Argon2i й Argon2d у стандартному форматі рядка PHC, з вашими значеннями пам’яті, ітерацій, паралелізму, довжини солі й результату. Перейдіть до <strong>Перевірки</strong>, щоб вставити хеш із бази даних, визначити алгоритм і параметри за префіксом та перевірити, чи збігається пароль. Кожен хеш отримує нову випадкову сіль і показує, скільки часу він зайняв на вашому пристрої. Хешування виконується у WebAssembly в браузері; пароль нікуди не надсилається.

Як створити хеш bcrypt або Argon2

  1. 1Виберіть Хеш, потім алгоритм: Argon2id для нових систем, bcrypt для сумісності з наявною.
  2. 2Задайте cost: коефіцієнт cost для bcrypt або пресет Argon2, наприклад OWASP 19 MiB, t=2. Якщо треба відтворити конфігурацію, налаштуйте пам’ять, ітерації й паралелізм вручну.
  3. 3Введіть пароль і натисніть Хешувати пароль. Нижче з’являться закодований хеш, його частини та витрачений час.
  4. 4Щоб перевірити хеш, виберіть Перевірку, вставте збережений хеш і пароль та натисніть Перевірити.

Чому паролям потрібен повільний хеш

Швидкий хеш на кшталт SHA-256 не підходить для паролів. Одна відеокарта обчислює мільярди хешів SHA-256 за секунду, тож витеклу таблицю SHA-256-хешів паролів можна перебирати з такою швидкістю. Функції хешування паролів навмисно повільні, а Argon2 до того ж потребує багато пам’яті, щоб кожна спроба коштувала реального часу й заліза. Налаштування, що займає чверть секунди на вашому сервері, коштує зловмисникові ту саму чверть секунди на кожну спробу для кожного користувача.

Кожен хеш також містить власну випадкову сіль, тож у двох користувачів з однаковим паролем хеші різні, а заздалегідь обчислені таблиці марні. Сіль і всі параметри зберігаються всередині рядка хешу, тому бібліотека може перевірити пароль лише за хешем.

Як читати хеш bcrypt

Хеш bcrypt, наприклад $2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW, складається з чотирьох частин: версія 2b, cost 12 (212 = 4096 раундів розширення ключа), сіль із 22 символів і хеш із 31 символу, обидва у власному алфавіті Base64 bcrypt. Кожне збільшення cost на одиницю подвоює час.

$2a$, $2b$ і $2y$ дають однаковий результат для паролів до 72 байтів; літери позначають виправлення помилок старих реалізацій. bcrypt читає лише перші 72 байти пароля й ігнорує решту, про що попереджає цей інструмент: довга парольна фраза або пароль кирилицею чи іншим нелатинським письмом, де символ займає від двох до чотирьох байтів, може досягти цієї межі раніше, ніж ви очікуєте.

Argon2id, Argon2i і Argon2d

Рядок PHC містить усе потрібне для перевірки: $argon2id$v=19$m=19456,t=2,p=1$<salt>$<hash> означає версію 1.3, 19 456 КіБ пам’яті, 2 проходи й 1 лінію, а далі сіль і хеш у Base64 без доповнення.

Argon2id
Гібрид двох варіантів нижче; саме його RFC 9106 і OWASP рекомендують для зберігання паролів. Використовуйте його, якщо ніщо не змушує інакше.
Argon2i
Доступ до пам’яті не залежить від пароля, що захищає від атак сторонніми каналами, але за малої кількості проходів він слабший проти зламу на GPU.
Argon2d
Доступ до пам’яті залежить від пароля: найстійкіший до GPU, але вразливий до сторонніх каналів. Підходить для proof-of-work, а не для серверів, що перевіряють вхід.

Рекомендовані налаштування

  • Argon2id: OWASP рекомендує 19 MiB пам’яті, 2 ітерації та паралелізм 1 або рівноцінний компроміс, наприклад 47 MiB з 1 ітерацією чи 12 MiB з 3. RFC 9106 пропонує 64 MiB, 3 ітерації й 4 лінії, якщо дозволяє пам’ять.
  • bcrypt: cost не менше 10; сьогодні 12 — поширене значення за замовчуванням. Обирайте найвищий cost, який витримає ваш ендпоінт входу: близько 250 мс на хеш на сервері — розумна мета.
  • Сіль: 16 випадкових байтів. Довжина хешу: 32 байтів більш ніж достатньо.
  • Час тут вимірюється на вашому пристрої у WebAssembly, який зазвичай повільніший за нативну бібліотеку на сервері. Перш ніж обрати cost, проведіть заміри на продакшн-обладнанні.

Коли знадобиться цей інструмент

Використовуйте його, щоб створити хеш для seed-користувача чи файлу конфігурації, перевірити, що хеш у базі даних справді відповідає паролю, який ви припускаєте, або з’ясувати, з якими параметрами створено наявний хеш. Ваш застосунок має хешувати паролі власною бібліотекою під час реєстрації й ніколи не надсилати паролі у відкритому вигляді на сайт для хешування. Щоб спершу придумати надійний пароль, скористайтеся генератором паролів; для підписів із ключем замість зберігання паролів дивіться генератор HMAC.

Поширені запитання

Що обрати: bcrypt чи Argon2?
Argon2id для нових систем: він переміг у Password Hashing Competition і є memory-hard, що робить злам на GPU та ASIC набагато дорожчим. bcrypt досі прийнятний і дуже широко підтримується, тож залиште його, якщо ваш стек уже його використовує.
Чому хеш щоразу інший для того самого пароля?
Кожен хеш використовує нову випадкову сіль, тому результат щоразу змінюється. Так і задумано. Щоб перевірити пароль, звіряйте його зі збереженим хешем, а не порівнюйте два щойно створені хеші.
Чи можна розшифрувати хеш bcrypt або Argon2?
Ні. Це односторонні функції. Єдиний спосіб знайти пароль — перебирати кандидатів і хешувати кожного, а ці алгоритми навмисно роблять це повільним.
Що за обмеження у 72 байти в bcrypt?
bcrypt використовує лише перші 72 байти пароля. Усе, що далі, не впливає на хеш, тож два довгі паролі з однаковими першими 72 байтами дають збіжні хеші. В Argon2 такого обмеження немає.
Який коефіцієнт cost обрати для bcrypt?
Не менше 10, а 12 — поширене значення за замовчуванням. Кожне збільшення подвоює роботу. Оберіть найвище значення, за якого вхід на вашому сервері лишається достатньо швидким.
Чи сумісні хеші bcrypt $2a$, $2b$ і $2y$?
Так, для паролів до 72 байтів вони дають однаковий хеш. Більшість бібліотек приймають усі три префікси, і цей інструмент перевіряє будь-який із них.
Чому перевірка триває стільки ж, скільки хешування?
Перевірка — це повторне хешування пароля із сіллю й параметрами з хешу та порівняння результатів, тож вона потребує рівно тієї самої роботи. Саме це робить перебір дорогим.
Чи надсилається пароль на сервер?
Ні. bcrypt і Argon2 працюють у WebAssembly у вашому браузері. Ніщо з введеного не залишає сторінку.