我试图完全理解password_hash,以便能够为审计员解释它。
根据我对答案的搜索,我了解到该password_hash()
函数是crypt()
. 在阅读预定义常量的 PHP 手册时,我看到它PASSWORD_BCRYPT
用作默认整数值(基本上它使用CRYPT_BLOWFISH
算法来散列密码)。
令我困惑的是$options
,如果省略该变量,则会生成一个随机盐,并且成本将设置为10
. 如果我提供更高的成本(例如:)12
,它是否仍会生成随机盐,因为我没有提供盐值?我在这里感到困惑的原因是因为我没有省略,$options
而是提供了不同的成本。
我的其他问题:
- 为什么增加成本价值会增加安全性?
- 由于盐是随机的,既然
password_hash()
是单向散列函数,如何验证密码?password_verify()
CRYPT_SHA512
比CRYPT_BLOWFISH
散列强吗?