PHP 哈希函数

PHP hash_hkdf() 函数用于使用 HMAC 方法生成带密钥的哈希值。

HKDF 是使用"md5"、"sha256"等 HMAC 算法、输入密钥和盐密钥派生的简单密钥。

HMAC 代表基于哈希的消息验证代码。它利用"md5"、"sha256"等加密哈希函数和密钥来返回给定数据的消息摘要哈希。

语法

hash_hkdf(algo, key, length, info, salt) 

参数

algo

必填。 指定所选哈希算法的名称(即"md5"、"sha256"、"haval160,4"等)。可以使用 hash_algos() 函数找到支持的算法列表。

注意:非加密哈希函数不支持允许。
key必填。 指定输入密钥材料(原始二进制)。不能为空。
length可选。 指定所需的输出长度(以字节为单位)。它不能大于所选哈希函数大小的 255 倍。如果长度为 0,则输出长度将默认为所选哈希函数大小。
info可选。 指定应用程序/上下文特定的信息字符串。
salt可选。 指定在推导过程中使用的盐。添加随机盐显着提高了 HKDF 的强度。

返回值

返回包含派生密钥的原始二进制表示形式的字符串(也称为输出密钥材料 - OKM),或失败时返回 false。

异常

如果密钥为空,则引发 E_WARNING,算法未知/非- 加密,长度小于 0 或太大(大于哈希函数大小的 255 倍)。

示例:hash_hkdf() 示例

在下面的示例中,a生成一对单独的密钥,适合创建先加密后 HMAC 构造,分别使用 AES-256 和 SHA-256 进行加密和身份验证。

<?php
//生成随机密钥和盐
//在推导过程中加强它
$inputKey = random_bytes(32);
$salt = random_bytes(16);

//导出一对单独的
//使用相同输入的按键
$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)