Генератор Argon2
Створіть хеш пароля Argon2id із випадковою сіллю розміром 16 байтів і виберіть обсяг пам’яті, кількість ітерацій, паралельність і довжину хешу. Обсяг пам’яті обмежено 64 MiB, а кількість ітерацій — 4; типові значення відповідають базовим рекомендаціям OWASP: 19 MiB і 2 проходи. Інструмент повертає стандартний рядок PHC, що починається з $argon2id$v=19$, який перевіряють PHP, libsodium і бібліотеки argon2. Пароль ніколи не відображається.
Поширені запитання
Що таке Argon2id?
Argon2 переміг у конкурсі Password Hashing Competition у 2015, а його специфікацію наведено в RFC 9106. Argon2id — це гібридний варіант, стійкий до атак через побічні канали та атак із використанням GPU. OWASP і RFC рекомендують його для зберігання паролів.
Що означають налаштування пам’яті, ітерацій і паралельності?
Пам’ять визначає, скільки MiB виділяється для кожного хешу, ітерації — скільки проходів виконується над цією пам’яттю, а паралельність — кількість потоків. Більші обсяг пам’яті та кількість ітерацій підвищують вартість кожної спроби для зловмисників. Тут обсяг пам’яті можна вибрати від 1 до 64 MiB, кількість ітерацій — від 1 до 4, а паралельність — від 1 до 4.
Які налаштування вибрати?
Типові значення — 19 MiB, 2 ітерації та 1 потік; це мінімум OWASP для Argon2id. За замовчуванням PHP використовує 64 MiB і 4 ітерації — ці значення також можна відтворити тут. У робочому середовищі використовуйте для кожного входу стільки пам’яті, скільки можуть виділити ваші сервери.
Чому обсяг пам’яті й кількість ітерацій обмежені?
Кожен хеш справді виділяє запитаний обсяг пам’яті та виконує всі проходи на спільному сервері. Обмеження у 64 MiB і 4 ітерації дає змогу обробляти кожен запит за частки секунди, водночас підтримуючи поширені налаштування для робочого середовища.
Що містить вихідний рядок?
У результаті, наприклад $argon2id$v=19$m=19456,t=2,p=1$, за яким ідуть сіль і хеш, зазначено варіант, версію, обсяг пам’яті в KiB, кількість ітерацій і потоків. Сіль і хеш записано у форматі Base64 без доповнення. Зберігайте весь рядок, адже під час перевірки з нього зчитуються всі параметри.
Чому хеш щоразу відрізняється?
У кожному запиті використовується нова випадкова сіль розміром 16 байтів, тому той самий пароль щоразу створює інший рядок. Усі такі рядки правильно проходять перевірку з відповідним паролем.
Чи можна вибрати довжину хешу?
Так, від 16 до 64 байтів; типове значення — 32 байти. Довші теги не ускладнюють підбір, тож для зберігання паролів достатньо 32 байтів.
Які системи приймають ці хеші?
PHP, crypto_pwhash_str_verify з libsodium, пакет argon2 для Node.js, argon2-cffi для Python і Spring Security читають формат рядка PHC. Верифікатор Argon2 на цьому сайті теж їх перевіряє.
Мій пароль зберігається або повертається?
Ні. Пароль використовується лише в пам’яті для обчислення хешу й вилучається з відповіді. Його ніколи не записують у журнал і не зберігають.
Чи можна генерувати хеші Argon2i або Argon2d?
Ні. Інструмент створює лише Argon2id, оскільки це рекомендований варіант для паролів. Верифікатор Argon2 усе одно приймає хеші Argon2i та Argon2d.