PHP 8.4.2 Released!

hash_init

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

hash_initИнициализирует контекст инкрементного хеширования

Описание

hash_init(
    string $algo,
    int $flags = 0,
    #[\SensitiveParameter] string $key = "",
    array $options = []
): HashContext

Список параметров

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().

Ошибки

  • Функция выбрасывает ошибку ValueError, если в параметре 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)

Смотрите также

  • hash_algos() - Возвращает список зарегистрированных алгоритмов хеширования
  • hash_update() - Добавляет данные в активный контекст хеширования
  • hash_update_file() - Добавляет данные из файла в активный контекст хеширования
  • hash_update_stream() - Добавляет данные из открытого потока в активный контекст хеширования
  • hash_final() - Завершает инкрементальное хеширование и возвращает результат в виде хеш-кода

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top