当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。