PHP Conference Japan 2024

openssl_pbkdf2

(PHP 5 >= 5.5.0,PHP 7,PHP 8)

openssl_pbkdf2生成 PKCS5 v2 PBKDF2 字符串

描述

openssl_pbkdf2(
    #[\SensitiveParameter] 字符串 $password,
    字符串 $salt,
    整数 $key_length,
    整数 $iterations,
    字符串 $digest_algo = "sha1"
): 字符串|false

openssl_pbkdf2() 计算 PBKDF2(基于密码的密钥派生函数 2),这是一种在 PKCS5 v2 中定义的密钥派生函数。

参数

password

从中生成派生密钥的密码。

salt

PBKDF2 建议使用至少 128 位(16 字节)的加密盐。

key_length

所需输出密钥的长度。

iterations

所需的迭代次数。 » NIST 建议至少 1,000 次。截至 2023 年,OWASP 建议 PBKDF2-HMAC-SHA256 进行 600,000 次迭代,PBKDF2-HMAC-SHA512 进行 210,000 次迭代。

digest_algo

来自 openssl_get_md_methods() 的可选哈希或摘要算法。默认为 SHA-1。建议将其设置为 SHA-256 或 SHA-512。

返回值

返回原始二进制字符串或在失败时返回 false

范例

示例 #1 openssl_pbkdf2() 示例

<?php
$password
= 'password';
$salt = openssl_random_pseudo_bytes(16);
$keyLength = 20;
$iterations = 600000;
$generated_key = openssl_pbkdf2($password, $salt, $keyLength, $iterations, 'sha256');
echo
bin2hex($generated_key)."\n";
echo
base64_encode($generated_key)."\n";
?>

参见

添加注释

用户贡献注释 1 条注释

McGlockenshire
10 年前
尽管手册声称此功能在 PHP 5.5 及更高版本中可用,但此函数在我的本地安装中不可用。

我预计安装了史前版本的 OpenSSL 库可能是罪魁祸首。

如果您使用的是 PHP 5.5 并且在 OpenSSL 扩展中没有此函数可用,请改用功能等效的 hash_pbkdf2 函数。
To Top