# hash_init

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

hash_init — 初始化增量哈希运算上下文

### 说明

hash_init ( string `$algo` [, int `$options` = 0 [, string `$key` = `NULL` ]] ) : HashContext

### 参数

`algo`

  要使用的哈希算法名称，例如："md5"，"sha256"，"haval160,4" 等。 如何获取受支持的算法清单，请参见 hash_algos()。

`options`

  进行哈希运算的可选设置，目前仅支持一个选项：`HASH_HMAC`。 当指定此选项的时候，必须 指定 `key` 参数。

`key`

  当 `options` 参数为 `HASH_HMAC` 时， 使用此参数传入进行 HMAC 哈希运算时的共享密钥。

### 返回值

返回哈希运算上下文对象，以供 hash_update()， hash_update_stream()，hash_update_file(), 和 hash_final() 函数使用。

### 更新日志

版本 | 说明
--- | ---
7.2.0 | 当使用 `HASH_HMAC` 选项的时候，不再支持非加密的哈希函数（adler32，crc32，crc32b，fnv132，fnv1a32，fnv164，fnv1a64，joaat）。
7.2.0 | 返回 HashContext 对象，不再返回资源类型。

### 范例

Example #1 增量哈希运算例程

    <?php
    $ctx = hash_init('md5');
    hash_update($ctx, 'The quick brown fox ');
    hash_update($ctx, 'jumped over the lazy dog.');
    echo hash_final($ctx);
    ?>

以上例程会输出：

    5c6ffbdd40d9556b73a21e63c3e0e904

### 参见

- hash() - 生成哈希值 （消息摘要）
- hash_algos() - 返回已注册的哈希算法列表
- hash_file() - 使用给定文件的内容生成哈希值
- hash_hmac() - 使用 HMAC 方法生成带有密钥的哈希值
- hash_hmac_file() - 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值