PHP Conference Japan 2024

hash_init

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_init初始化一個增量雜湊上下文

說明

hash_init(
    字串 $algo,
    整數 $flags = 0,
    #[\SensitiveParameter] 字串 $key = "",
    陣列 $options = []
): 雜湊上下文

參數

algo

所選雜湊演算法的名稱(例如 "sha256")。支援的演算法列表請參見 hash_algos()

注意事項:

如果指定了 HASH_HMAC 旗標,則不允許使用非加密雜湊函式。

flags(旗標)

雜湊生成的選用設定,目前僅支援一個選項:HASH_HMAC。指定此旗標時,必須指定 key 參數。

key(金鑰)

flags 參數指定 HASH_HMAC 時,必須在此參數中提供與 HMAC 雜湊方法一起使用的共享金鑰。

options(選項)

各種雜湊演算法的選項陣列。目前,只有 MurmurHash 變體支援 "seed" 參數。

傳回值

傳回一個雜湊上下文 (Hashing Context),可與 hash_update()hash_update_stream()hash_update_file()hash_final() 搭配使用。

錯誤/例外

  • 如果 algo 參數未知或是非加密雜湊函式,或者 key 參數為空,則會丟出 ValueError 例外。
  • options 參數中傳遞錯誤類型的設定選項現在會發出 E_DEPRECATED 錯誤,因為它們可能會被錯誤地解譯。未來這將會變成 ValueError 例外。

更新日誌

版本 說明
8.4.0 傳遞錯誤類型的選項現在已被棄用。
8.1.0 已新增 options 參數。
8.0.0 現在,如果 algo 參數未知或是非加密雜湊函式,或者 key 參數為空,則會丟出 ValueError 例外。先前會傳回 false 並發出 E_WARNING 訊息。
7.2.0 已停用將非加密雜湊函式(adler32、crc32、crc32b、fnv132、fnv1a32、fnv164、fnv1a64、joaat)與 HASH_HMAC 一起使用。
7.2.0 傳回 HashContext 物件,而不是資源。

範例

範例 #1 增量雜湊範例

<?php
$hash
= hash('sha256', 'The quick brown fox jumped over the lazy dog.');

$ctx = hash_init('sha256');
hash_update($ctx, 'The quick brown fox ');
hash_update($ctx, 'jumped over the lazy dog.');
$incremental_hash = hash_final($ctx);

echo
$incremental_hash, PHP_EOL;
var_dump($hash === $incremental_hash);
?>

以上範例會輸出

68b1282b91de2c054c36629cb8dd447f12f096d3e3c587978dc2248444633483
bool(true)

另請參閱

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top