hash_hkdf
hash_hkdf
(PHP 7 >= 7.1.2)
hash_hkdf — 生成提供的密钥输入的HKDF密钥派生
描述
string hash_hkdf ( string $algo , string $ikm [, int $length = 0 [, string $info = '' [, string $salt = '' ]]] )
参数
algo
所选散列算法的名称(即"sha256", "sha512", "haval160,4",等)。有关支持的算法列表,请参见hash_algos()。
注意
:
ikm
输入密钥元素(原始二进制)。不能为空。
length
所需的输出长度(字节)。不能大于所选散列函数大小的255倍。
如果length
为0
,则输出长度将默认为所选散列函数大小。
info
应用程序/上下文特定信息字符串。
salt
在派生过程中使用的Salt。
虽然可选,但加入随机Salt显着提高了HKDF的强度。
返回值
返回包含派生键的原始二进制表示的字符串(也称为输出键控材料 - OKM); 或失败时返回FALSE
。
错误/异常
如果E_WARNING
的ikm
为空,algo
未知/非加密,length
小于0
或太大(大于散列函数大小的255倍),将会产生An 。
例子
示例#1 hash_hkdf()示例
<?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结构。