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