PHP 8.6.0 Beta 1 is available for testing

hash_init

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

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

Описание

function 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() - Завершает инкрементальное хеширование и возвращает результат в виде хеш-кода

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

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

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

AltStyle によって変換されたページ (->オリジナル) /