hash_hmac

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

hash_hmacГенерирует хеш-код на основе ключа через метод HMAC

Описание

hash_hmac(
    string $algo,
    string $data,
    #[\SensitiveParameter] string $key,
    bool $binary = false
): string

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

algo

Название алгоритма хеширования (например, "sha256"). Список поддерживаемых алгоритмов возвращает функция hash_hmac_algos().

Замечание:

Некриптографические хеш-функции не допускаются.

data

Сообщение для хеширования.

key

Общий секретный ключ для генерации хеш-кода методом HMAC.

binary

Функция выводит необработанные двоичные данные, если для параметра установили значение true. При значении false функция выводит данные в шестнадцатеричной кодировке в нижнем регистре.

Возвращаемые значения

Функция возвращает строку, которая содержит вычисленный хеш-код в шестнадцатеричной кодировке в нижнем регистре. Функция возвращает хеш-код в виде бинарных данных, если для параметра binary установили значение true.

Ошибки

Функция выбрасывает ошибку ValueError, если в аргументе algo указали название неизвестной или некриптографической хеш-функции.

Список изменений

Версия Описание
8.0.0 Функция теперь выбрасывает ошибку ValueError, если в параметр algo передали название неизвестной или некриптографической хеш-функции; раньше вместо этого возвращалось значение false.
7.2.0 Генерацию хеш-строки через некриптографические хеш-функции наподобие adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat запретили.

Примеры

Пример #1 Пример генерации хеш-кода функцией hash_hmac()

<?php

echo hash_hmac('sha256', 'Съешь ещё этих мягких французских булок, да выпей чаю.', 'secret');

?>

Результат выполнения приведённого примера:

7909df92910e8b1c5348d8b21f6e27578fdcab03eeaa60c0f109b49a71128fc7

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

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