PHP password_needs_rehash() 函數

PHP 密碼散列演算法PHP 密碼散列演算法

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() 用法

<?php $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); } // 使用戶登錄 } ?>

PHP 密碼散列演算法PHP 密碼散列演算法