PHP中password_hash password_verify加密、验证原理

PHP5.5之后新加了两个密码相关的函数:password_hash(加密)和password_verify(验证)。

string password_hash ( string $password , integer $algo [, array $options ] )

password_hash接收两个必需参数(明文密码和加密算法),一个可选的数组,返回一个字符串;
password_verify接收两个必需参数(明文密码和加密后的密码),返回Bool

这个函数每次生成的加密后的hash值都不同,但是password_verify照样能验证,感到很疑惑,后来查阅资料,看到函数的加密原理。 加密后的字符串实际上是有四部分组成,如下图:


实际上salt是自动生成的,每次的salt不一样,储存在回传值内,所以加密后的hash必然不同。

暂无评论

发送评论 编辑评论


上一篇