hash_pbkdf2
hash_pbkdf2
(PHP 5 >= 5.5.0, PHP 7)
hash_pbkdf2 — 生成提供的密码的PBKDF2密钥派生
描述
string hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [, int $length = 0 [, bool $raw_output = false ]] )
参数
algo
所选散列算法的名称(即md5
,sha256
,haval160,4
等)。有关支持的算法的列表,请参阅hash_algos()。
password
用于派生的密码。
salt
用于派生的salt。这个值应该是随机生成的。
iterations
要进行派生的内部迭代次数。
length
输出字符串的长度。如果raw_output
是TRUE
这对应于所导出的密钥的字节长度,如果raw_output
是FALSE
这对应于所导出的密钥的字节长度的两倍(作为密钥的每个字节被返回作为两个hexits)。
如果通过0
,则使用所提供的算法的整个输出。
raw_output
当设置为TRUE
时,输出原始二进制数据。当设置为FALSE
时,输出小写hexits。
返回值
将包含派生键的字符串返回为小写hexits,除非raw_output
设置TRUE
为返回导出键的原始二进制表示形式。
错误/异常
如果算法未知,,迭代参数小于或等于 0,,长度小于0或盐太长 (大于 INT_MAX-4),将引发 E_WARNING
。
更新日志
版本 | 描述 |
---|---|
7.2.0 | 使用非加密散列函数(adler32,crc32,crc32b,fnv132,fnv1a32,fnv164,fnv1a64,joaat)已被禁用。 |
例子
示例#1 hash_pbkdf2()示例,基本用法
<?php
$password = "password";
$iterations = 1000;
// Generate a random IV using openssl_random_pseudo_bytes()
// random_bytes() or another suitable source of randomness
$salt = openssl_random_pseudo_bytes(16
$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20
echo $hash;
?>
上面的例子会输出类似于:
120fb6cffcf8b32c43e7
笔记
警告
PBKDF2方法可用于哈希存储密码。但是,应该注意的是,password_hash()或crypt()与CRYPT_BLOWFISH
密码存储更适合。