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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。