(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)
hash_init — 初始化增量哈希上下文
$algo
,$flags
= 0,$key
= "",$options
= []
algo
所选哈希算法的名称(例如 "sha256"
)。有关支持的算法列表,请参阅 hash_algos().
注意:
如果指定了
HASH_HMAC
标志,则不允许使用非加密哈希函数。
flags
哈希生成的可选设置,目前仅支持一个选项:HASH_HMAC
。如果指定,则 必须 指定 key
。
key
如果为 flags
指定了 HASH_HMAC
,则必须在此参数中提供一个与 HMAC 哈希方法一起使用的共享密钥。
options
各种哈希算法的选项数组。目前,只有 "seed"
参数受 MurmurHash 变体支持。
返回一个用于 hash_update()、hash_update_stream()、hash_update_file() 和 hash_final() 的哈希上下文。
如果 algo
未知或是非加密哈希函数,或者如果 key
为空,则抛出 ValueError 异常。
版本 | 描述 |
---|---|
8.1.0 | 添加了 options 参数。 |
8.0.0 | 现在,如果 algo 未知或是非加密哈希函数,或者如果 key 为空,则抛出 ValueError 异常。以前,返回 false ,并发出 E_WARNING 消息。 |
7.2.0 | 禁用使用 HASH_HMAC 的非加密哈希函数(adler32、crc32、crc32b、fnv132、fnv1a32、fnv164、fnv1a64、joaat)。 |
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)