PHP hash_hkdf 哈希(Hash)函数



  • 定义和用法

    hash_hkdf - 生成提供的密钥输入的HKDF密钥派生
  • 版本支持

    PHP4 PHP5 PHP7
    不支持 不支持 v7.1.2+支持
  • 语法

    hash_hkdf( string $algo , string $ikm [, int $length = 0 [, string $info = '' [, string $salt = '' ]]] )
    
    hash_hkdf() 生成提供的密钥输入的HKDF密钥派生
  • 参数

    参数 必需的 描述
    algo 所选哈希算法的名称(即“ sha256”,“ sha512”,“ haval160,4”等。)有关受支持算法的列表,请参见hash_algos()注意:不允许使用非加密哈希函数。
    ikm 输入密钥资料(原始二进制)。 不能为空。
    length 所需的输出长度(以字节为单位)。 不能大于所选哈希函数大小的255倍。如果length为0,则输出长度将默认为所选哈希函数的大小。
    info 应用程序/特定于上下文的信息字符串。
    salt 在推导过程中使用的盐。尽管可选,但添加无盐盐可以显着提高HKDF的强度。
  • 返回值

    返回一个字符串,其中包含派生密钥的原始二进制表示形式(也称为输出密钥材料-OKM); 或失败则为FALSE。
    如果ikm为空,算法未知/非加密,长度小于0或太大(大于哈希函数大小的255倍),则会引发E_WARNING。
  • 示例

    // 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)
    
  • 相关页面

    hash_pbkdf2() - 生成所提供密码的 PBKDF2 密钥导出