(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)
hash_init — Инициализирует контекст инкрементного хеширования
$algo,$flags = 0,$key = "",$options = []
algo
       Название алгоритма хеширования (например, "sha256").
       Список алгоритмов, которые поддерживает функция, приводит описание функции hash_hmac_algos().
       
Замечание:
Некриптографические хеш-функции не допускаются, если указали флаг
HASH_HMAC.
flags
       Необязательные настройки для генерации хеша, пока поддерживается только один вариант:
       HASH_HMAC. При этом параметр key
       должен быть указан.
      
key
       Если флаг HASH_HMAC указали для параметра flags,
       то в этом параметре нужно указать общий секретный ключ, который функция использует
       с методом хеширования HMAC.
      
options
       Массив опций для алгоритмов хеширования.
       Пока вариантами функций хеширования MurmurHash поддерживается только параметр "seed".
      
Функция возвращает контекст хеширования для передачи в функции hash_update(), hash_update_stream(), hash_update_file() и hash_final().
algo указали неизвестную или некриптографическую
     хеш-функцию, или если параметр key пуст.
    
   options
     параметров конфигурации неверного типа теперь выдаётся ошибка уровня
     E_DEPRECATED, поскольку такие параметры иногда интерпретируются
     неправильно.
     В будущем это станет выбрасывать ошибку ValueError.
    
   
| Версия | Описание | 
|---|---|
| 8.4.0 | Передача параметров неверного типа устарела. | 
| 8.1.0 | Добавили параметр options. | 
| 8.0.0 | Теперь функция выбрасывает исключение ValueError,
        если параметр algoнеизвестен или не криптографическая хеш-функция,
        или если параметрkeyпуст;
        раньше возвращалось значениеfalseи выдавалась ошибка уровняE_WARNING.
        emitted. | 
| 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)
