Password API

string password_hash ( string $password , integer $algo [, array $options ] )

  • Создает хэш пароля.
  • Поддерживаемые алгоритмы:
    • PASSWORD_DEFAULT
    • PASSWORD_BCRYPT (использует CRYPT_BLOWFISH)
  • options может содержать solt и cost.
$hashed = password_hash("password", PASSWORD_BCRYPT);
echo $hashed;

$hashed = password_hash(
    "password", PASSWORD_BCRYPT, ['cost' => 12]
);
echo $hashed;

boolean password_verify ( string $password , string $hash )

  • Проверяет, что переданный хэш соответствует переданному паролю.
  • Так как результат password_hash() уже хранит в себе алгоритм, соль и цену алгоритма, то вся информация для работы password_verify() уже есть в хэше пароля.

boolean password_needs_rehash ( string $hash , integer $algo [, array $options ] )

  • Проверяет, что данный хэш соответствует алгоритму и опциям.
// Assume $hashed contains the originally stored password
if (password_verify($_POST['password'], $hashed)) {
    // Password is valid
    if (password_needs_rehash($hashed, PASSWORD_DEFAULT)) {
        $newhash = password_hash(
            $_POST['password'], PASSWORD_DEFAULT
        );
        // Store the $newhash
    }
}