C
Chigusa Tools
🔑 Хеш

bcrypt

password_hash / password_verify

bcrypt password hashing and verification.

Как использовать

Обзор

Инструмент для хеширования строк с помощью bcrypt или проверки хеш-строк.

💡
Преобразование выполняется на стороне сервера, но данные не сохраняются.

Один из распространённых случаев применения хеширования — «хранение паролей».

Принципиально важно, что хеш-строку нельзя преобразовать обратно в исходные данные (однонаправленная функция).
Из bcrypt-хеша пароля невозможно получить исходную строку.
Поэтому пароли не хранятся в открытом виде — вместо них принято хранить хеш-строку.

💡
В зависимости от стойкости хеша возможен подбор методом грубой силы, однако подробное объяснение здесь опускается.

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

Хеширование (password_hash)

Хеширование bcrypt выполняется примерно следующим кодом.
$hash = password_hash('string_to_hash', PASSWORD_BCRYPT, [
    'cost' => 'cost',
]);

Хеш-строки bcrypt содержат соль (случайную строку), поэтому каждый раз получается разная строка.

$2y$10$Z0kGQ04hCto9dnMu.GyzWOWNQmoKyeF5PXH.zsrf/I.yNJRcbdN86

Стандартный cost для функции password_hash равен 10.
Хотя сама функция принимает значения от 4 до 31, данный инструмент ограничивает диапазон 4–15, чтобы не перегружать сервер.
(При больших значениях обработка может занять очень много времени.)

Проверка хеша (password_verify)

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

Проверка bcrypt-хеша выполняется примерно следующим кодом.
$result = password_verify('original_string', 'hash_string_to_verify');
💡
С помощью этого инструмента можно легко выполнить хеширование bcrypt и проверку хеша.