我知道password_verify可用于检查密码对预先存储的哈希的有效性.我也知道password_hash要求我们选择哈希算法,如PASSWORD_ACTUAL或PASSWORD_BCRYPT.
当password_verify($pass, $hash)转换$pass成散列怎么会知道使用哪种算法?
它可以告诉因为哈希本身具有所需的信息.
每个PHP文档:
请注意,password_hash()返回算法,cost和salt作为返回哈希的一部分.因此,验证哈希所需的所有信息都包含在其中.这允许验证功能验证散列,而无需为盐或算法信息单独存储.
例如,PASSWORD_BCRYPT哈希看起来像这样:
$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
|-----|----------------------|------------------------------|
A1,A2 B C
Run Code Online (Sandbox Code Playgroud)
2a表示哈希算法.对于Bcrypt来说2a,它是2b,或者2y10是散列的成本参数.这使得散列可以安全地防止定时攻击,因为您可以增加此数量以增加计算所需的"工作量"有了所有这些参数(现在,只是看一下a1),它已经可以告诉它是什么算法.
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |