PHP password_needs_rehash() 函數
password_hash() 函數用於檢測散列值是否匹配指定的選項。
PHP 版本要求: PHP 5 >= 5.5.0, PHP 7
語法
bool password_needs_rehash ( string $hash , int $algo [, array $options ] )
參數說明:
- hash: 一個由 password_hash() 創建的散列值。
- algo: 一個用來在散列密碼時指示演算法的密碼演算法常量。
- options: 一個包含有選項的關聯數組。目前支持兩個選項:salt,在散列密碼時加的鹽(干擾字串),以及cost,用來指明演算法遞歸的層數。這兩個值的例子可在 crypt() 頁面找到。 省略後,將使用隨機鹽值與默認 cost。
返回值
此函數檢測指定的散列值是否實現了提供的演算法和選項。 如果沒有,需要重新生成散列值。
實例
password_needs_rehash() 用法
$password = 'rasmuslerdorf';
$hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS';
// 當硬體性能得到改善時,cost 參數可以再修改
$options = array('cost' => 11);
// 根據明文密碼驗證儲存的散列
if (password_verify($password, $hash)) {
// 檢測是否有更新的可用散列演算法
// 或者 cost 發生變化
if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
// 如果是這樣,則創建新散列,替換舊散列
$newHash = password_hash($password, PASSWORD_DEFAULT, $options);
}
// 使用戶登錄
}