(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)
hash_init — Инициализация инкрементального контекста хеширования
algo
Имя выбранного алгоритма хеширования (например, "md5", "sha256", "haval160,4" и т.д.). Весь список поддерживаемых алгоритмов можно посмотреть в описании функции hash_algos().
flags
Необязательные настройки для генерации хеша, в настоящее время поддерживается только один вариант: HASH_HMAC
. При этом параметр key
должен быть указан.
key
Если HASH_HMAC
указан в параметре flags
, то в этом параметре нужно предоставить общий секретный ключ, который будет использоваться с методом хеширования HMAC.
options
Множество опций для различных алгоритмов хеширования. В настоящее время в вариантах MurmurHash поддерживается только параметр "seed".
Возвращает контекст хеширования для использования в функциях hash_update(), hash_update_stream(), hash_update_file() и hash_final().
Выбрасывает исключение ValueError, если параметр algo
неизвестен или не является криптографической хеш-функцией или если параметр key
не задан.
Версия | Описание |
---|---|
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', 'Наглый коричневый лисёнок прыгает вокруг ленивой собаки.');
$ctx = hash_init('sha256');
hash_update($ctx, 'Наглый коричневый лисёнок ');
hash_update($ctx, 'прыгает вокруг ленивой собаки.');
$incremental_hash = hash_final($ctx);
echo $incremental_hash, PHP_EOL;
var_dump($hash === $incremental_hash);
?>
Результат выполнения приведённого примера:
199f52fc9f2492c64449ed96003f135f8ea428e353e50c40b0c1a16b9c16f571 bool(true)