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