hash_hkdf

(PHP 7 >= 7.1.2)

hash_hkdfФормирования ключа HKDF для заданных входных данных

Описание

hash_hkdf ( string $algo , string $key , int $length = 0 , string $info = "" , string $salt = "" ) : string

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

algo

Имя выбранного хеширующего алгоритма (например, "sha256", "sha512", "haval160,4" и т.д.) Список поддерживаемых алгоритмов можно посмотреть в описании функции hash_algos().

Замечание:

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

key

Входные данные (необработанные бинарные данные). Не может быть пустым.

length

Выбранная длина вывода в байтах. Не может быть более чем в 255 раз больше размера выбранной хеширующей функции.

Если length установлено как 0, то вывод по длине будет равен размеру выбранной хеширующей функции.

info

Информационная строка, специфичная для приложения/контекста.

salt

Соль, используемая при формировании ключа.

Хотя и необязательно, но добавление случайной соли значительно улучшает силу HKDF.

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

Возвращает строку, содержащую необработанные бинарные данные, представляющие сформированный ключ или false в случае неудачи.

Ошибки

Ошибка уровня E_WARNING будет сгенерирована в случае, если параметр key пуст, в параметре algo указан неизвестный либо не криптографический алгоритм, параметр length меньше 0 или очень большой (более чем в 255 раз больше размера хеш-функции).

Примеры

Пример #1 Пример использования hash_hkdf()

<?php
// Генерируем случайный ключ и соль для усиления процесса формирования.
$inputKey random_bytes(32);
$salt random_bytes(16);

// Формируем пару разных ключей, используя одни и те же входные данные.
$encryptionKey hash_hkdf('sha256'$inputKey32'aes-256-encryption'$salt);
$authenticationKey hash_hkdf('sha256'$inputKey32'sha-256-authentication'$salt);

var_dump($encryptionKey !== $authenticationKey); // bool(true)
?>

В примере выше создана пара разных ключей, подходящих для создания конструкции encrypt-then-HMAC, используя AES-256 и SHA-256 для кодирования и аутентификации соответственно.

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