php-password_hash似乎返回随机变量

这个问题已经在这里有了答案:            >            How to use password_hash                                    7个
>            Using password_hash and password_verify                                    1个
我在将密码存储在用户数据库中之前尝试对密码进行哈希处理,因此我运行代码:

$hashedPass = password_hash($pass, PASSWORD_DEFAULT);

这段代码给了我一个值,比如说$2y $10 $wAJr0Z1spRtOcK4cLhIkguUCKgwZKYrwm.nRhm6AtCfDH8ri7ylJu存储在数据库中.
现在,当我尝试登录时,作为密码输入的相同字符串给出了完全不同的$hashedPass:说$2y $10 $cayCQDSQ6pCICSozuIgBNu9uIopIoT5R6Y7aHXG6wx4v / oKx.Ipse

这只是随机的吗?有什么我应该代替的吗?

解决方法:

这是预期的行为. password_hash生成一个盐,该盐与纯文本密码一起用于生成哈希.盐是随机生成的,因此每次调用password_hash时输出都会不同.

使用password_verify验证密码.

http://php.net/manual/en/function.password-verify.php

哈希本身包含password_verify验证纯文本密码所需的所有信息.哈希的解剖结构取决于您提供的密码哈希所使用的算法:

$2y$10$wAJr0Z1spRtOcK4cLhIkguUCKgwZKYrwm.nRhm6AtCfDH8ri7ylJu

> $2y $此前缀表示这是一个bcrypt哈希
> 10这是成本参数
> wAJr0Z1spRtOcK4cLhIkgu前22个字符为盐
> UCKgwZKYrwm.nRhm6AtCfDH8ri7ylJu其余的31个字符是哈希

https://en.wikipedia.org/wiki/Bcrypt

上一篇:javascript-bcrypt错误:需要数据和哈希参数


下一篇:echarts-折线图-大白点