我是PHP新手,现在正在学习密码安全性。我在PHP documentation中了解了crypt()
和password_hash()
函数。我仅了解crypt()
和password_hash()
函数,但我如何一起使用它们?我是否还需要在crypt()函数中定义一个salt,将其留空,如password_hash(crypt($password,''),PASSWORD_DEFAULT);
答案 0 :(得分:4)
函数password_hash()在内部使用crypt()函数。它是一个包装器,负责处理所有可能的陷阱,例如生成加密安全盐,或选择合适的算法。
所以不需要组合这些功能,也不需要自己生成盐,只需使用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);