推荐答案
-- -------------------- ---- ------- -- -- ------------- -------- --------- - ---------------- --------------- - ------------------------ ------------------ -- -- --------------- ---- ---------- - ---------------------- -- ---------------------------- ----------------- - ---- -------- - ---- - ---- -------- -
本题详细解读
password_hash 函数
password_hash
是 PHP 5.5 引入的一个函数,用于生成密码的哈希值。它使用了一种安全的哈希算法(如 bcrypt),并且会自动生成一个随机的盐值(salt),确保每次生成的哈希值都不同。
语法
password_hash(string $password, int|string $algo, array $options = []): string|false
$password
: 需要哈希的密码字符串。$algo
: 使用的哈希算法。推荐使用PASSWORD_DEFAULT
,它会自动选择当前 PHP 版本中最安全的算法。$options
: 可选参数,用于指定算法的选项,如cost
(计算成本)等。
返回值
- 返回一个包含哈希值的字符串,或者在失败时返回
false
。
password_verify 函数
password_verify
用于验证用户输入的密码是否与存储的哈希值匹配。它会自动处理哈希值中的盐值,因此你不需要手动提取或管理盐值。
语法
password_verify(string $password, string $hash): bool
$password
: 用户输入的密码。$hash
: 之前通过password_hash
生成的哈希值。
返回值
- 如果密码与哈希值匹配,返回
true
,否则返回false
。
使用场景
- 用户注册:在用户注册时,使用
password_hash
对用户密码进行哈希处理,并将哈希值存储到数据库中。 - 用户登录:在用户登录时,使用
password_verify
验证用户输入的密码是否与数据库中存储的哈希值匹配。
注意事项
- 不要手动生成盐值:
password_hash
会自动生成盐值,手动生成可能会导致安全问题。 - 使用
PASSWORD_DEFAULT
:这个常量会自动选择当前 PHP 版本中最安全的算法,确保你的应用在未来也能保持安全性。 - 定期更新哈希算法:随着 PHP 版本的更新,
PASSWORD_DEFAULT
可能会指向不同的算法,因此建议定期更新密码哈希值。