當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


PHP openssl_pbkdf2()用法及代碼示例


openssl_pbkdf2() 函數是 PHP 中的內置函數,用於實現 OpenSSL 庫提供的基於密碼的 key 派生函數 2 (PBKDF2) 算法。該算法設計緩慢且計算密集,使其能夠抵抗暴力攻擊。

用法:

openssl_pbkdf2( 
    string $password, 
    string $salt, 
    int $key_length, 
    int $iterations, 
    string $digest_algo = "sha1" )
: string|false

Parameters: 該函數接受五個參數,如下所述:

  • $password: key 應源自的密碼。
  • $salt: 應該用於幫助使派生 key 唯一的隨機鹽值。
  • $key_length: 派生 key 的長度(以字節為單位)。
  • $iterations: 派生 key 時使用的迭代次數。更多的迭代將使算法更慢,但也更安全。
  • $digest_algo: 派生 key 時使用的摘要算法。這應該是受支持的 OpenSSL 摘要算法之一,例如 “sha256” 或 “sha512”。

返回值:返回值openssl_pbkdf2()是包含派生 key 的二進製字符串。如果失敗,將返回“false”。

示例 1:下麵的例子演示了openssl_pbkdf2()函數。

PHP


<?php 
$password = "this@ismypassword55839459144595"; 
  
// Saved hash from a previous run 
$savedHash = "MjY4YjRkZDc1YzAzNzYzZGMwZDEzYjI3NmVlM2ZkNTE="; 
  
$decodedHash = base64_decode($savedHash); 
  
if (openssl_pbkdf2($password, $decodedHash, 32, 10000, "sha256") === 
    $decodedHash) { 
    echo "Password is valid."; 
} else { 
    echo "Password is invalid."; 
} 
?>
輸出
Password is invalid.

示例 2:下麵的例子演示了openssl_pbkdf2()函數。

PHP


<?php 
  
$userID = 'user123'; 
$deviceID = 'device456'; 
  
$secretKey = openssl_random_pseudo_bytes(32); 
$salt = $userID . $deviceID; 
  
$iterations = 50000; 
$keyLength = 64; 
  
$secureToken =  
      openssl_pbkdf2($secretKey,  
                   $salt, 
                   $keyLength, 
                   $iterations,  
                   'sha512'); 
  
// Display the secure token 
echo "Secure Token: " . base64_encode($secureToken) . "\n"; 
?>

輸出:

Secure Token: 
LWL+RuQr+TmOysJt8CBrKu5yC8vk2f9aMBH9y1xK82Nz4dDd88dd+8QqssBgoMDnGD9D5kTcmAlldzz7hUStjw==

參考: https://www.php.net/manual/en/function.openssl-pbkdf2.php



相關用法


注:本文由純淨天空篩選整理自neeraj3304大神的英文原創作品 PHP openssl_pbkdf2() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。