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

hash_hkdf

(PHP 7 >= 7.1.2)

hash_hkdf — 生成提供的密钥输入的HKDF密钥派生

描述

代码语言:javascript
复制
string hash_hkdf ( string $algo , string $ikm [, int $length = 0 [, string $info = '' [, string $salt = '' ]]] )

参数

algo

所选散列算法的名称(即"sha256", "sha512", "haval160,4",等)。有关支持的算法列表,请参见hash_algos()。

注意

不允许使用非加密散列函数。

ikm

输入密钥元素(原始二进制)。不能为空。

length

所需的输出长度(字节)。不能大于所选散列函数大小的255倍。

如果length0,则输出长度将默认为所选散列函数大小。

info

应用程序/上下文特定信息字符串。

salt

在派生过程中使用的Salt。

虽然可选,但加入随机Salt显着提高了HKDF的强度。

返回值

返回包含派生键的原始二进制表示的字符串(也称为输出键控材料 - OKM); 或失败时返回FALSE

错误/异常

如果E_WARNINGikm为空,algo未知/非加密,length小于0或太大(大于散列函数大小的255倍),将会产生An 。

例子

示例#1 hash_hkdf()示例

代码语言:javascript
复制
<?php
//?Generate?a?random?key,?and?salt?to?strengthen?it?during?derivation.
$inputKey?=?random_bytes(32);
$salt?=?random_bytes(16);

//?Derive?a?pair?of?separate?keys,?using?the?same?input?created?above.
$encryptionKey?=?hash_hkdf('sha256',?$inputKey,?32,?'aes-256-encryption',?$salt);
$authenticationKey?=?hash_hkdf('sha256',?$inputKey,?32,?'sha-256-authentication',?$salt);

var_dump($encryptionKey?!==?$authenticationKey);?//?bool(true)
?>

上面的例子产生了一对单独的密钥,分别适用于加密和认证的AES-256和SHA-256的创建加密然后HMAC结构。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com