(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)
hash_init — 初始化一個增量雜湊上下文
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)