hash_hkdf

(PHP 7 >= 7.1.2)

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

Описание

string hash_hkdf ( string $algo , string $ikm [, int $length = 0 [, string $info = '' [, string $salt = '' ]]] )

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

algo

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

Замечание:

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

ikm

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

length

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

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

info

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

salt

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

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

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

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

Ошибки

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

Примеры

Пример #1 hash_hkdf() example

<?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 для кодирования и аутентификации соответственно.

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

add a note add a note

User Contributed Notes

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