W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
(PHP 7 >= 7.1.2, PHP 8)
hash_hkdf — 生成所提供密鑰輸入的 HKDF 密鑰派生
hash_hkdf(
string $algo,
string $key,
int $length = 0,
string $info = "",
string $salt = ""
): string
algo
所選哈希算法的名稱(即“sha256”、“sha512”、“haval160,4”等) 有關支持的算法列表,請參閱 hash_algos()。
注意:
不允許使用非加密哈希函數(shù)。
key
輸入鍵控材料(原始二進制文件)。不能為空。
length
所需的輸出長度(以字節(jié)為單位)。 不能大于所選哈希函數(shù)大小的 255 倍。
如果為 ,則輸出長度 將默認為所選的哈希函數(shù)大小。length
0
info
特定于應用程序/上下文的信息字符串。
salt
在衍生過程中使用的鹽。
雖然是可選的,但添加隨機鹽可顯著提高 HKDF 的強度。
返回一個字符串,其中包含派生鍵的原始二進制表示形式 (也稱為輸出鍵控材料 - OKM)。
如果為空、未知/非加密、小于或太大,則引發(fā) ValueError 異常 (大于哈希函數(shù)大小的 255 倍)。keyalgolength0
版本 | 說明 |
---|---|
8.0.0 | 現(xiàn)在在出錯時拋出 ValueError 異常。 以前,返回 false 并發(fā)出E_WARNING 消息。 |
示例 #1 hash_hkdf() example
<?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)
?>
上面的示例生成一對單獨的密鑰,適合創(chuàng)建一個 encrypt-then-HMAC 構造,使用 AES-256 和 SHA-256 進行加密和 身份驗證。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: