確保 info 參數包含隨機元素。
來源:https://soatok.blog/2021/11/17/understanding-hkdf/
(PHP 7 >= 7.1.2, PHP 8)
hash_hkdf — 產生指定金鑰輸入的 HKDF 金鑰衍生
algo
所選雜湊演算法的名稱(例如 "sha256"
)。支援的演算法列表請參閱 hash_hmac_algos()。
注意事項:
不允許使用非加密雜湊函式。
key(金鑰)
輸入的金鑰素材(原始二進位資料)。不可為空。
length(長度)
所需的輸出長度,以位元組為單位。不可超過所選雜湊函式大小的 255 倍。
如果 length
為 0
,則輸出長度將預設為所選雜湊函式的大小。
info(資訊)
應用程式/上下文相關的資訊字串。
salt(鹽)
衍生過程中使用的鹽。
雖然是選用的,但加入隨機鹽可以顯著提高 HKDF 的強度。
返回一個字串,包含衍生金鑰(也稱為輸出金鑰素材 - OKM)的原始二進位表示法。
如果 key
為空、algo
未知/非加密、length
小於 0
或太大(大於雜湊函式大小的 255 倍),則會拋出 ValueError 例外。
範例 #1 hash_hkdf() 範例
<?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)
?>
上述範例產生了一對獨立的金鑰,適用於建立先加密後HMAC 的結構,分別使用 AES-256 和 SHA-256 進行加密和驗證。
確保 info 參數包含隨機元素。
來源:https://soatok.blog/2021/11/17/understanding-hkdf/