Хешируйте пароль с помощью bcrypt или Argon2, либо проверьте, соответствует ли пароль существующему хешу.
Инструмент позволяет сгенерировать безопасный хеш пароля с использованием алгоритмов bcrypt, Argon2i и Argon2id прямо в браузере — без установки Python, PHP или любого другого ПО. Также поддерживается режим проверки: введите открытый пароль и хеш, чтобы убедиться, что они соответствуют друг другу.
Хранить пароли в открытом виде или в виде MD5/SHA-1 крайне опасно. При утечке базы данных все пароли мгновенно становятся известны злоумышленнику. Современные алгоритмы — bcrypt и Argon2 — специально спроектированы медленными: перебор миллиарда вариантов занимает годы даже на мощном GPU.
Разработан в 1999 году Нильсом Провосом и Дэвидом Мазьером на основе шифра Blowfish. Встроен в PHP функцией password_hash($pw, PASSWORD_BCRYPT). Важные особенности:
cost;$2y$10$ и содержит 60 символов.Победитель Password Hashing Competition 2015 года. Существует в трёх вариантах: Argon2d (устойчивость к GPU), Argon2i (устойчивость к side-channel атакам), Argon2id (гибрид — рекомендуется OWASP и RFC 9106). В PHP доступен с версии 7.2 (PASSWORD_ARGON2I) и 7.3 (PASSWORD_ARGON2ID).
memory_cost (КБ), time_cost (итерации), threads (параллелизм);$argon2id$v=19$.Функция password_verify() извлекает алгоритм и соль из самого хеша, повторно хеширует пароль и сравнивает результат. Она корректно работает как с bcrypt, так и с Argon2 хешами — алгоритм определяется автоматически по префиксу.
bcrypt — классический алгоритм (1999), проверенный и повсеместно поддерживаемый, но ограничен 72 байтами пароля и не задействует параллелизм. Argon2id (2015) поддерживает настройку памяти и параллелизма, что делает его значительно устойчивее к атакам на GPU и ASIC. Для новых проектов рекомендуется Argon2id.
Хеширование происходит на сервере. Не вводите пароли от действующих аккаунтов. Используйте инструмент для тестирования алгоритмов или проверки в разработке. Для продакшена всегда хешируйте пароли локально на своём сервере.
bcrypt и Argon2 автоматически генерируют случайную соль при каждом вызове и встраивают её в итоговый хеш. Это нормально — при проверке алгоритм извлекает соль из хеша и корректно сравнивает результаты.