如何一起使用 crypt() 和 password_hash() 函数?

How to use crypt() and the password_hash() function together?

我是 PHP 的新手,现在正在学习密码安全。我在 PHP documentation 中读到了 crypt()password_hash() 函数。我只了解 crypt()password_hash() 功能,但如何同时使用它们?我是否还需要在 crypt() 函数中定义一个 salt,将其留空,如 password_hash(crypt($password,''),PASSWORD_DEFAULT);

函数password_hash()内部使用了crypt()函数。它是一个包装器,负责处理所有可能的陷阱,例如生成加密安全盐或选择合适的算法。

所以不需要组合函数,也不需要自己生成salt,直接用password_hash()password_verify()就可以了。

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($_POST['password'], PASSWORD_DEFAULT);

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($_POST['password'], $existingHashFromDb);