• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

password_hash详解

php 搞代码 3年前 (2022-01-21) 25次浏览 已收录 0个评论

password_hash

传统的用户名和密码都采用加盐的方式存储加密信息,盐值也需要存储。

自PHP5.5.0之后,新增加了密码散列算法函数(password_hash),password_hash() 使用足够强度的单向散列算法创建密码的散(、本文来源gao@!dai!ma.com搞$$代^@码网*搞gaodaima代码列(hash)。 password_hash() 兼容 crypt()。 所以, crypt() 创建的密码散列也可用于 password_hash()。

说明

password_hash不需要再单独存储盐值,而且每次加密的值都不一样,我们只需要存储加密字符串,验证时用password_verify()方法即可得出结果!

当前支持的算法:

PASSWORD_DEFAULT – 使用 bcrypt 算法 (PHP 5.5.0 默认)。 注意,该常量会随着 PHP 加入更新更高强度的算法而改变。 所以,使用此常量生成结果的长度将在未来有变化。 因此,数据库里储存结果的列可超过60个字符(最好是255个字符)。

PASSWORD_BCRYPT – 使用 CRYPT_BLOWFISH 算法创建散列。 这会产生兼容使用 "$2y$" 的 crypt()。 结果将会是 60 个字符的字符串, 或者在失败时返回 FALSE。

PASSWORD_ARGON2I – 使用 Argon2 散列算法创建散列。

返回值:

返回散列后的密码, 或者在失败时返回 FALSE。

使用的算法、cost 和盐值作为散列的一部分返回。所以验证散列值的所有信息都已经包含在内。 这使 password_verify() 函数验证的时候,不需要额外储存盐值或者算法的信息。

/** * 我们想要使用默认算法散列密码 * 当前是 BCRYPT,并会产生 60 个字符的结果。 * * 请注意,随时间推移,默认算法可能会有变化, * 所以需要储存的空间能够超过 60 字(255字不错) */  password_hash("rasmuslerdorf", PASSWORD_DEFAULT); 输出类似结果:$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

验证

$inputValue = '123456'; //用户输入的密码if(password_verify( $inputValue, '数据库存储的密码')){    //如果为真,则验证成功} 输出:True  或 False

推荐教程:《PHP视频教程》

以上就是password_hash详解的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:password_hash详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址