hash_init
(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)
hash_init — 初始化增量散列运算上下文
说明
hash_init(
string
int
#[\SensitiveParameter] string
array
): HashContext
string
$algo
,int
$flags
= 0,#[\SensitiveParameter] string
$key
= "",array
$options
= []): HashContext
参数
algo
-
要使用的散列算法的名称(例如:
“sha256”
)。 可以在 hash_algos() 中查看当前支持的算法。注意:
如果指定
HASH_HMAC
标志,则不允许使用非加密哈希函数。 flags
-
进行散列运算的可选设置,目前仅支持一个选项:
HASH_HMAC
。当指定此选项的时候,必须指定key
参数。 key
-
当
flags
参数为HASH_HMAC
时,使用此参数传入进行 HMAC 散列运算时的共享密钥。 options
-
各种散列算法的一系列选项数组。 目前 MurmurHash 算法仅支持
“seed”
参数。
返回值
返回散列运算上下文对象,以供 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)
参见
- hash_algos() - 返回已注册的散列算法列表
- hash_update() - 向活跃的哈希运算上下文中填充数据
- hash_update_file() - 从文件向活跃的散列运算上下文中填充数据
- hash_update_stream() - 从打开的流向活跃的散列运算上下文中填充数据
- hash_final() - 结束增量散列且返回摘要结果
+添加备注
用户贡献的备注
此页面尚无用户贡献的备注。