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');