Генератор Bcrypt

5 из 2 оценок
Генератор Bcrypt

Генератор Bcrypt — бесплатный инструмент, который создаёт bcrypt-хеш пароля из любой введённой строки для безопасного хранения паролей.

Что такое bcrypt и безопасен ли он сегодня?

Bcrypt — алгоритм хеширования паролей, который по-прежнему подходит для их хранения при правильно выбранном параметре стоимости, хотя в новых системах часто предпочитают Argon2id. Нильс Провос и Давид Мазьер разработали bcrypt в 1999 году, использовав процедуру формирования ключей шифра Blowfish, чтобы намеренно увеличить вычислительные затраты на каждую попытку подбора пароля.

Хеширование необратимо. Поэтому приложение проверяет пароль, хешируя введённый вариант с сохранёнными параметрами, а не восстанавливая исходное значение. В отличие от алгоритмов общего назначения, таких как SHA-3, bcrypt создаёт автономную кодированную запись фиксированной длины, содержащую версию, стоимость, соль и контрольную сумму.

Стандартная запись bcrypt состоит из 60 символов ASCII. Её контрольная сумма содержит 184 бита и представлена 31 символом в собственной кодировке bcrypt, похожей на Base64. Bcrypt не считается криптографически взломанным, но у него есть ограничение, связанное с возрастом алгоритма: традиционные реализации обрабатывают не более 72 байт входных данных. Кроме того, Argon2id обеспечивает защиту за счёт высоких требований к памяти, которой у bcrypt нет.

Схема: входной текст проходит через функцию Bcrypt и даёт хеш фиксированной длины, который нельзя обратить

Как пользоваться генератором bcrypt?

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

  1. Введи пароль или тестовую строку без изменений, сохранив регистр, пробелы и знаки препинания.
  2. Сгенерируй результат bcrypt.
  3. Скопируй все 60 символов, включая маркер версии в начале и стоимость.
  4. Сохрани результат в столбце базы данных, предназначенном для хеша пароля.
  5. При входе используй функцию проверки bcrypt, предоставляемую твоей платформой, а не создавай новый хеш для прямого текстового сравнения.
Инструмент Генератор Bcrypt на digily.link с формой ввода

Обычно bcrypt использует новую случайную соль для каждого хеша. Поэтому при двукратном хешировании одних и тех же входных данных могут получиться две разные записи, и обе успешно пройдут проверку для исходного значения. Это нормальное поведение, благодаря которому одинаковые пароли не получают одинаковые сохранённые значения.

Обработка выполняется на сервере. Введённые данные передаются на сервер по HTTPS и не сохраняются. Если речь идёт о настоящем рабочем пароле, оцени, соответствует ли его ввод в стороннем онлайн-сервисе политике безопасности твоей организации.

Можно ли расшифровать или восстановить bcrypt-хеш?

Нет, bcrypt-хеш нельзя расшифровать, поскольку это не зашифрованные данные и в нём нет ключа дешифрования. На практике атакующий может только перебирать возможные пароли и проверять каждый вариант по сохранённому хешу.

Bcrypt замедляет такой перебор с помощью настраиваемой стоимости. Но он не сделает безопасным короткий, распространённый или ранее скомпрометированный пароль, и настойчивый злоумышленник всё равно может подобрать слабое значение. Соль не позволяет применять одну заранее рассчитанную таблицу сразу ко множеству учётных записей, однако она не является секретной и включена в хранимую запись.

Пример результата работы инструмента Генератор Bcrypt

Как читать результат bcrypt

Результат bcrypt обычно соответствует модульному формату crypt. Типичная структура выглядит так: $2y$12$[22-character salt][31-character checksum]. Это лишь иллюстрация формата, а не хеш какого-либо указанного пароля.

Часть Обычная длина Назначение
Маркер версии 4 символа Обозначает вариант bcrypt, например $2y$ или $2b$.
Стоимость 3 символа Содержит двузначную стоимость и следующий за ней разделитель.
Соль 22 символа Кодирует случайную 128-битную соль.
Контрольная сумма 31 символ Кодирует 184-битную контрольную сумму bcrypt.

Храни все эти части вместе. Изменение одного символа, обрезка значения или сохранение в слишком коротком столбце обычно приводят к ошибке проверки. В совместимых библиотеках маркер версии может различаться, поэтому приложениям следует использовать стандартные API для работы с паролями, а не самостоятельно разбирать и заново собирать запись.

Когда стоит использовать bcrypt?

Bcrypt подходит для хеширования паролей в системах, которые уже его поддерживают, особенно если важна совместимость с существующей базой данных или фреймворком. Алгоритм намеренно работает медленно и использует соль, поэтому он не подходит в качестве обычной контрольной суммы файла или идентификатора для дедупликации.

  • Подходящие сценарии: хранение паролей приложений, тестирование миграции, проверка размеров полей базы данных и воспроизведение среды разработки, совместимой с bcrypt.
  • Argon2id для новой системы хранения паролей: используй его, если платформа поддерживает Argon2id и позволяет правильно управлять параметрами памяти.
  • SHA-3 для файлов и содержимого: используй его для проверки целостности файлов, создания отпечатков содержимого или дедупликации. Генератор SHA-3/384 и Генератор SHA-3/512 создают дайджесты общего назначения, а не записи паролей.
  • Неподходящие сценарии: не используй bcrypt для цифровых подписей, аутентификации сообщений, шифрования или хранения данных, которые впоследствии потребуется восстановить.

Пробелы, знаки препинания и цифры обрабатываются как входные данные и не игнорируются. Перед обработкой bcrypt символы с диакритическими знаками и символы нелатинских алфавитов кодируются в байты. Поэтому обе системы должны формировать одинаковую последовательность байтов, используя согласованную кодировку символов и нормализацию Unicode. Ограничение в 72 байта здесь особенно важно, поскольку один символ Unicode может занимать несколько байт. Технически можно хешировать и пустой ввод, но пустой пароль не обеспечивает сколько-нибудь значимой защиты от перебора.

Частые вопросы

Сколько места в базе данных нужно для bcrypt-хеша?

Для обычной записи bcrypt выдели не менее 60 символов ASCII. Поле с небольшим запасом по длине может упростить будущий переход на другой алгоритм хеширования паролей. Двоичный столбец для стандартной кодированной формы не требуется.

Можно ли перенести существующие SHA-хеши паролей в bcrypt?

Нет, существующий дайджест SHA нельзя преобразовать в bcrypt-хеш исходного пароля, не зная сам пароль. Распространённый способ миграции состоит в том, чтобы проверить старый хеш при следующем входе пользователя, затем хешировать введённый пароль с помощью bcrypt или Argon2id и заменить старую запись.

Перед сохранением результата проверь, что скопированы все 60 символов, поле базы данных не обрезает значение, а принимающее приложение поддерживает указанный в записи маркер версии.

Поделиться

Популярные инструменты