假设您正在使用 php 中内置的 password_hash 和 password_verify 函数并使用默认散列算法(当前为 bcrypt)。现在,鉴于这是默认设置,如果更改,这将影响将来的 password_verify 功能,不是吗?那么,程序员将来是否需要编写代码来检查这一点,即如果 PASSWORD_DEFAULT != bcrypt,使用 bcrypt 继续验证过程,然后根据新算法更新数据库?
1 回答
5
不,更改算法或成本不会影响密码验证,因为算法和成本是存储哈希的一部分。如果您看到 password_hash 的规格,则说明
使用的算法、成本和盐作为散列的一部分返回。因此,验证哈希所需的所有信息都包含在其中。这允许 password_verify() 函数验证哈希,而无需单独存储盐或算法信息。
您可以使用 password_needs_rehash http://php.net/manual/en/function.password-needs-rehash.php来检查是否需要更新存储的密码。所以 PHP 已经为您提供了所有这些支持,从而以一种安全的方式轻松地散列密码。
于 2016-06-08T06:32:55.210 回答