PHP
加密 | Cryptography

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

所选散列算法的名称(即md5sha256haval160,4等)。有关支持的算法的列表,请参阅hash_algos()。

password

用于派生的密码。

salt

用于派生的salt。这个值应该是随机生成的。

iterations

要进行派生的内部迭代次数。

length

输出字符串的长度。如果raw_outputTRUE这对应于所导出的密钥的字节长度,如果raw_outputFALSE这对应于所导出的密钥的字节长度的两倍(作为密钥的每个字节被返回作为两个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密码存储更适合。