我刚刚了解到PHP具有password_hash()
功能,而不是手动调用密码的哈希算法。
http://php.net/manual/en/function.password-hash.php
但我对文档有两个问题。
PASSWORD_DEFAULT
作为算法。从PHP 5.5开始,算法为bcrypt
,然后它说:请注意,此常量旨在随着时间的推移而变化为新的和 PHP中添加了更强大的算法。出于这个原因,长度 使用此标识符的结果可能会随时间而变化。因此, 建议将结果存储在可以的数据库列中 超过60个字符(255个字符将是一个不错的选择)
如果我只保留哈希的结果,并且密码哈希的结果会变得不同,我怎么能保持用户在哈希算法更改后仍然能够登录?
salt
选项下显示:警告自PHP 7.0.0起,不推荐使用salt选项。就是现在 首选只使用默认生成的盐。
如果该函数会生成一个salt,那么对于相同的密码,在两个不同的执行中,结果哈希是否会有所不同?除非用于生成盐的算法是这样的,即相同的密码总是会得到相同的盐,但这会破坏使用盐的目的,不会吗?
答案 0 :(得分:1)
如果我只保留哈希的结果,并且密码哈希的结果会变得不同,我应该如何让用户在哈希算法更改后仍然能够登录?
如果该函数会生成一个salt,那么对于相同的密码,两个不同的执行结果哈希会不同?
password_verify()
函数将检测用于散列特定密码的散列(和盐)并相应地执行操作。
使用该功能检查用户输入的密码是否正确。