首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

hash_pbkdf2

(PHP 5 >= 5.5.0, PHP 7)

hash_pbkdf2 — 生成提供的密码的PBKDF2密钥派生

描述

代码语言:javascript
复制
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()示例,基本用法

代码语言:javascript
复制
<?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;
?>

上面的例子会输出类似于:

代码语言:javascript
复制
120fb6cffcf8b32c43e7

笔记

警告

PBKDF2方法可用于哈希存储密码。但是,应该注意的是,password_hash()或crypt()与CRYPT_BLOWFISH密码存储更适合。

扫码关注腾讯云开发者

领取腾讯云代金券