首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >password_hash似乎返回了一个随机变量

password_hash似乎返回了一个随机变量
EN

Stack Overflow用户
提问于 2017-12-17 01:23:14
回答 1查看 904关注 0票数 3

在将密码存储到用户数据库之前,我正在尝试散列密码,因此我运行以下代码:

代码语言:javascript
复制
$hashedPass = password_hash($pass, PASSWORD_DEFAULT);

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

这只是随机的吗?有什么我该用的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-17 01:30:13

这是预期的行为。password_hash生成一个salt,它与明文密码一起使用以生成哈希。salt是随机生成的,所以每次调用password_hash时输出都会不同。

使用password_verify验证密码。

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

password_verify验证明文密码所需的所有信息都包含在散列本身中。对于您提供的密码散列,哈希的剖析取决于所使用的算法:

代码语言:javascript
复制
$2y$10$wAJr0Z1spRtOcK4cLhIkguUCKgwZKYrwm.nRhm6AtCfDH8ri7ylJu
  • $2y$这个前缀表示这是一个bcrypt哈希
  • 10这是成本参数
  • wAJr0Z1spRtOcK4cLhIkgu前22个字符是盐
  • UCKgwZKYrwm.nRhm6AtCfDH8ri7ylJu剩下的31个字符是散列

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47851446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档