Описание тега php-password-hash

API хеширования паролей для упрощения создания паролей и управления ими таким образом, чтобы их нельзя было легко отменить. Заменяет небезопасное хеширование SHA1 и MD5. Доступен изначально с PHP 5.5.0+ или через внешний пакет совместимости с PHP 5.3.7 и выше.

password_hash(), функция php, возникла из-за необходимости легко защищать пароли таким образом, чтобы хэш нельзя было легко взломать, если злоумышленник получит таблицу, содержащую хешированные пароли.
Хотя лежащий в основе алгоритм хеширования был легко доступен через функцию PHP crypt(), собрать воедино все необходимые элементы, чтобы эта функция работала, было недоступно большинству программистов. В результате многие новые программисты обратятся к небезопасным системам хэширования sha1 и md5, которые существуют уже давно.

Хеш пароля просто предоставляет оболочку дляcrypt(), используя BCRYPT. Система по умолчанию генерирует случайную соль (рекомендуется) и возвращает хеш, содержащий соль, стоимость и хешированный пароль. Передача этой строки обратно в password_verify() вместе с паролем в виде обычного текста сообщит вам, совпадают ли они.

$pass = 'password';
$hash = password_hash($pass, PASSWORD_DEFAULT);
// $hash now contains a string that looks like
// $2y$10$WNxIiMP4o7EevZKNL01T4uwux1TvOhFRj31XVfG7lQV7HhVY5tsIK

$verify = password_verify($pass, $hash);
var_dump($verify); // bool(true)

Хеширование паролей встроено в PHP 5.5.0 или новее, однако для PHP 5.3.7 или новее существует совместимая библиотека, которая работает таким же образом.