PHP - Hash pbkdf2() 函数



定义和用法

hash_pbkdf2() 函数返回给定密码的 PBKDF2 密钥派生。

PBKDF2 代表基于密码的密钥派生函数 2。PBKDF2 密钥派生函数使用伪随机函数,例如基于哈希的消息认证码 (HMAC),它应用于给定的密码或消息以及盐值,并且该过程会迭代多次以获得密钥。它主要用于哈希密码,PBKDF2 密钥派生函数的设计使得攻击者难以猜测被哈希的原始密码。

语法

hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [
   , int $length = 0 [, bool $raw_output = FALSE ]
] ) : string

参数

序号 参数及描述
1

algo

哈希算法的名称。hash 提供了大量的算法,一些重要的算法包括 md5、sha256 等。

要获取支持的完整算法列表,请查看 hash_algos()

2

password

需要为其生成 PBKDF2 密钥派生的密码。

3

salt

要用于派生 PBKDF2 密钥派生的盐值。

4

iterations

为获得最终派生而执行的内部迭代次数。

5

length

最终 PBKDF2 密钥派生的长度。如果 raw_output 为 TRUE,则派生的密钥对应于字节长度;如果 raw_output 为 FALSE,则其将是派生密钥字节长度的两倍。

6

raw_output

如果 raw_output 为 false,则输出将是一个包含小写十六进制数的字符串;如果为 TRUE,则输出将是原始二进制数据。

返回值

hash_pbkdf2() 返回一个字符串,如果 raw_output 为 false,则该字符串包含派生密钥作为小写十六进制数;如果 raw_output 设置为 TRUE,则该字符串将是派生密钥的原始二进制表示。

PHP 版本

此函数适用于 PHP 5.5.0 以上版本。

示例 1

使用 hash_pbkdf2() -

<?php
   $password = "mypassword";
   $iterations = 500;
   $salt = 'testingkey';
   $pbkdf2_hash = hash_pbkdf2("md5", $password, $salt, $iterations, 25);
   echo $pbkdf2_hash;	
?>

输出

这将产生以下结果:

cb0130970bb39f6a95d193934

示例 2

使用 1000 次迭代的 hash_pbkdf2() -

<?php
   $password = "mypassword";
   $iterations = 1000;
   $salt = openssl_random_pseudo_bytes(10); //generates pseudo-random string of bytes
   $pbkdf2_hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10);
   echo $pbkdf2_hash;
?>

输出

这将产生以下结果:

0c31d20aa2

示例 3

使用 raw_output 为 true 的 hash_pbkdf2() -

<?php
   $password = "mypassword";
   $iterations = 1000;
   $salt = openssl_random_pseudo_bytes(10); //generates pseudo-random string of bytes
   $pbkdf2_hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10, true);
   echo $pbkdf2_hash;
?>

示例 4

使用 raw_output 为 true 的 hash_pbkdf2() -

在本例中,我们将使用 base64_encode() PHP 函数,该函数将 hash_pbkdf2() 的原始二进制输出转换为可读字符串。

<?php
   echo base64_encode(
      hash_pbkdf2("sha256", 'passwordtest', openssl_random_pseudo_bytes(10), 5000, 10, true)
   );
?>

输出

这将产生以下结果:

2FogGKtZxmt4iQ==
php_function_reference.htm
广告