PHP⽤户密码加密函数password_hash
传统的⽤户名和密码都采⽤加盐的⽅式存储加密信息,盐值也需要存储。
⾃PHP5.5.0之后,新增加了密码散列算法函数(password_hash),password_hash() 使⽤⾜够强度的单向散列算法创建密码的散列(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() 函数验证的时候,不需要额外储存盐值或者算法的信息。
加密:
<?php
/**
* 我们想要使⽤默认算法散列密码
* 当前是 BCRYPT,并会产⽣ 60 个字符的结果。
*
* 请注意,随时间推移,默认算法可能会有变化,
* 所以需要储存的空间能够超过 60 字(255字不错)
*/
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
>
输出类似结果:
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
验证:
<?php
密码字符串是什么$inputValue = '123456'; //⽤户输⼊的密码
var_dump(password_verify( $inputValue, '存储的加密字符串'));
>
输出:
True或False
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论