PHP 8.1.28 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,
    string $key = "",
    array $options = []
): HashContext

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

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)

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

  • hash() - Генерирует хеш-код (подпись сообщения)
  • hash_algos() - Возвращает список зарегистрированных алгоритмов хеширования
  • hash_file() - Генерация хеш-значения, используя содержимое заданного файла
  • hash_hmac() - Генерация хеш-кода на основе ключа, используя метод HMAC
  • hash_hmac_file() - Генерация хеш-кода на основе ключа, используя метод HMAC и содержимое полученного файла

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top