PHP 面试题 目录

PHP 中 password_hash 和 password_verify 函数的用法?

推荐答案

-- -------------------- ---- -------
-- -- ------------- --------
--------- - ----------------
--------------- - ------------------------ ------------------

-- -- --------------- ----
---------- - ----------------------
-- ---------------------------- ----------------- -
    ---- --------
- ---- -
    ---- --------
-

本题详细解读

password_hash 函数

password_hash 是 PHP 5.5 引入的一个函数,用于生成密码的哈希值。它使用了一种安全的哈希算法(如 bcrypt),并且会自动生成一个随机的盐值(salt),确保每次生成的哈希值都不同。

语法

  • $password: 需要哈希的密码字符串。
  • $algo: 使用的哈希算法。推荐使用 PASSWORD_DEFAULT,它会自动选择当前 PHP 版本中最安全的算法。
  • $options: 可选参数,用于指定算法的选项,如 cost(计算成本)等。

返回值

  • 返回一个包含哈希值的字符串,或者在失败时返回 false

password_verify 函数

password_verify 用于验证用户输入的密码是否与存储的哈希值匹配。它会自动处理哈希值中的盐值,因此你不需要手动提取或管理盐值。

语法

  • $password: 用户输入的密码。
  • $hash: 之前通过 password_hash 生成的哈希值。

返回值

  • 如果密码与哈希值匹配,返回 true,否则返回 false

使用场景

  • 用户注册:在用户注册时,使用 password_hash 对用户密码进行哈希处理,并将哈希值存储到数据库中。
  • 用户登录:在用户登录时,使用 password_verify 验证用户输入的密码是否与数据库中存储的哈希值匹配。

注意事项

  • 不要手动生成盐值password_hash 会自动生成盐值,手动生成可能会导致安全问题。
  • 使用 PASSWORD_DEFAULT:这个常量会自动选择当前 PHP 版本中最安全的算法,确保你的应用在未来也能保持安全性。
  • 定期更新哈希算法:随着 PHP 版本的更新,PASSWORD_DEFAULT 可能会指向不同的算法,因此建议定期更新密码哈希值。
纠错
反馈