~~~
/**
* -------------------------------------------------------------------
* 密碼散列算法 (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 ('賬號或密碼不正確!');
}
~~~