Генератор паролей Bcrypt
Генерируйте безопасные bcrypt-хэши паролей мгновенно в браузере. Выберите коэффициент стоимости и хэшируйте на стороне клиента — полная конфиденциальность и бесплатно.
Генерируйте безопасные bcrypt-хэши паролей мгновенно в браузере. Выберите коэффициент стоимости и хэшируйте на стороне клиента — полная конфиденциальность и бесплатно.
bcrypt — это функция хеширования паролей, разработанная Нильсом Провосом и Дэвидом Мазьером в 1999 году на основе шифра Blowfish. В отличие от хеш-функций общего назначения, таких как SHA-256, bcrypt намеренно медленный — и его можно настроить с помощью параметра стоимости — а это именно то свойство, которое необходимо хэшеру паролей. Более быстрая хеш-функция позволяет злоумышленникам перебирать больше кандидатов в секунду; более медленный ограничивает их.
bcrypt также автоматически включает соль для каждого пароля, устраняя целый класс атак, основанных на заранее вычисленных радужных таблицах. Параметры соли и стоимости сохраняются как часть выходных данных bcrypt, поэтому для проверки требуется только сохраненный хеш и пароль-кандидат — отдельного управления солью не требуется. Такое сочетание медлительности, соли и автономного формата сделало bcrypt хэшем паролей по умолчанию в течение двух десятилетий и сильным выбором сегодня.
Современные альтернативы существуют. Argon2 выиграл конкурс хеширования паролей в 2015 году и предлагает не только надежность, но и надежность памяти. scrypt предлагает аналогичные свойства. Для новых проектов рекомендуется использовать Argon2id. bcrypt остается приемлемым и широко используемым, особенно в средах, где Argon2 недоступен.
Хранение паролей в виде открытого текста является злоупотреблением служебным положением. Хранить их с помощью быстрого хэша, такого как SHA-256, немногим лучше — современные графические процессоры вычисляют миллиарды хэшей SHA-256 в секунду, что делает атаку методом перебора любого распространенного пароля осуществимой за несколько часов. Намеренная медлительность bcrypt меняет экономику: при коэффициенте стоимости 12 злоумышленник тратит примерно 250 мс на каждый возможный пароль, что делает перебор непрактичным для любого нетривиального пароля.
Автоматическая соль для каждого пароля bcrypt также предотвращает атаки радужных таблиц. Два пользователя с одним и тем же паролем создают разные хеши bcrypt, поскольку их соли различаются. Компрометация базы данных паролей не позволяет злоумышленнику быстро идентифицировать общие пароли или совпадения с заранее вычисленными таблицами.
Введите пароль, выберите стоимость, получите хэш.
bcrypt использует фазу установки ключа модифицированного шифра Blowfish, повторяемую 2 раза. Коэффициент стоимости является логарифмическим: стоимость 12 в два раза медленнее, чем стоимость 11, в четыре раза медленнее, чем стоимость 10. Такое логарифмическое масштабирование позволяет администраторам увеличивать стоимость с течением времени по мере совершенствования оборудования, не перепроектируя систему.
Формат вывода: $version$cost$saltAndHash, где saltAndHash закодирован в формате Base64 с использованием специального алфавита. Обычно это версия $2b$ (современный вариант с исправленной ошибкой переноса) или $2y$ (эквивалент для PHP). Соль имеет размер 16 байт; хэш — 24 байта; вместе они кодируют 53 символа custom-base64.
Максимальная входная длина — 72 байта (ограничение длины ключа Blowfish). Более длинные пароли автоматически усекаются, что является давней особенностью bcrypt. Лучше всего либо ограничить длину пароля до 72 байтов, либо предварительно хешировать его с помощью SHA-256, чтобы нормализовать длину перед bcrypt.