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 = []
): 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异常。
  • options中传递错误类型的配置选项现在会发出E_DEPRECATED错误,因为它们可能会被错误解释。将来这将成为ValueError

变更日志

版本 描述
8.4.0 传递错误类型的选项现在已弃用。
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)

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top