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
相关用法
- PHP openssl_pkey_new()用法及代码示例
- PHP openssl_pkey_get_public()用法及代码示例
- PHP openssl_pkey_export_to_file()用法及代码示例
- PHP openssl_private_encrypt()用法及代码示例
- PHP openssl_public_encrypt()用法及代码示例
- PHP openssl_public_decrypt()用法及代码示例
- PHP openssl_private_decrypt()用法及代码示例
- PHP openssl_pkey_export()用法及代码示例
- PHP openssl_pkcs12_read()用法及代码示例
- PHP openssl_pkcs12_export_to_file()用法及代码示例
- PHP openssl_pkcs12_export()用法及代码示例
- PHP openssl_get_cipher_methods()用法及代码示例
- PHP openssl_cipher_iv_length()用法及代码示例
- PHP openssl_get_cert_locations()用法及代码示例
- PHP openssl_get_curve_names()用法及代码示例
- PHP openssl_spki_verify()用法及代码示例
- PHP openssl_spki_export_challenge()用法及代码示例
- PHP openssl_digest()用法及代码示例
- PHP openssl_error_string()用法及代码示例
- PHP openssl_verify()用法及代码示例
- PHP openssl_get_md_methods()用法及代码示例
- PHP openssl_cipher_key_length()用法及代码示例
- PHP opendir()用法及代码示例
- PHP octdec()用法及代码示例
- PHP ob_start()用法及代码示例
注:本文由纯净天空筛选整理自neeraj3304大神的英文原创作品 PHP openssl_pbkdf2() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。