~~~
/**
* -------------------------------------------------------------------
* 密码散列算法 (php5.5以上)
* -------------------------------------------------------------------
* password_get_info — 返回指定散列(hash)的相关信息
* password_hash — 创建密码的散列(hash)
* password_needs_rehash — 检测散列值是否匹配指定的选项
* password_verify — 验证密码是否和散列值匹配
* -------------------------------------------------------------------
*/
$password = 'chen123';
$hash = '$2y$11$Ry480VkhNbkEbjbYELr.dez3inCErJgMmxlZXoYxf9U.q0mR9E.Za';
// 当硬件性能得到改善时,cost 参数可以再修改
$options = array('cost' => 11);
$newHash = password_hash($password, PASSWORD_DEFAULT, $options);
// 根据明文密码验证储存的散列
if (password_verify($password, $hash)) {
// 检测是否有更新的可用散列算法
// 或者 cost 发生变化
if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
// 如果是这样,则创建新散列,替换旧散列
$newHash = password_hash($password, PASSWORD_DEFAULT, $options);
die ('新散列值:' . $newHash);
} else {
die ('散列值未更新!');
}
// 使用户登录
} else {
die ('账号或密码不正确!');
}
~~~