您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

详解PHP中password_hash的功能

2025/12/11 4:19:42发布33次查看
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() 函数验证的时候,不需要额外储存盐值或者算法的信息。
/** * 我们想要使用默认算法散列密码 * 当前是 bcrypt,并会产生 60 个字符的结果。 * * 请注意,随时间推移,默认算法可能会有变化, * 所以需要储存的空间能够超过 60 字(255字不错) */ password_hash("rasmuslerdorf", password_default); 输出类似结果:$2y$10$.vga1o9wmrjrwavxd98hnogsnpdczlqm3jq7kned1rvagv3fykk1a
验证
$inputvalue = '123456'; //用户输入的密码if(password_verify( $inputvalue, '数据库存储的密码')){ //如果为真,则验证成功} 输出:true 或 false
推荐教程:《php视频教程》
以上就是详解php中password_hash的功能的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product