Génère une dérivation de clé HKDF Generate depuis une clé fournis

# hash_hkdf

(PHP 7 >= 7.1.2)

hash_hkdf — Génère une dérivation de clé HKDF Generate depuis une clé fournis

### Description

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

### Liste de paramètres

`algo`

  Nom de l'algorithme de hachage sélectioné (par exemple : "sha256", "sha512", "haval160,4", etc...) Voir hash_algos() pour une liste d'algorithmes supporté.

  > Note:

  > Les fonctions de hachages qui ne sont pas cryptographique sont interdite.

`ikm`

  Données (Input keying material) en binaire qui serviront au clavetage. Ne peut pas être vide.

`length`

  Longueur désiré des données de sortie en octets. Ne peut être plus grand que 255 fois la taille de la fonction de hachage.

  Si `length` vaut 0, la longueur des données de sortie sera par défaut la taille de la function de hachage choisie

`info`

  Information sous forme de chaîne de caractères spécifique à l'Application/contexte.

`salt`

  Sel à utiliser lors de la dérivation.

  Bien qu'optionel, ajouté un sel aléatoire augmente de façon significative la robustesse de HKDF.

### Valeurs de retour

Retourne un chaîne de caractères contenant une représentation binaire brut de la clé dérivé (aussi connue sous le nom de output keying material - OKM) ; ou `FALSE` en cas d'échec.

### Erreurs / Exceptions

Une `E_WARNING` sera émise si `ikm` est vide, `algo` est inconnue/pas cryptographique, `length` est moins que 0 ou trop grand (plus grand que 255 fois la taille de la fonction de hachage).

### Exemples

Exemple #1 Exemple avec hash_hkdf()

`<?php
// Génère une clé aléatoire, et un sel pour la renvorcer lors de la dérivation.
$inputKey = random_bytes(32);
$salt = random_bytes(16);
// Dérive une paire de clés séparé, utilisant les mêmes données crée juste avant.
$encryptionKey = hash_hkdf('sha256', $inputKey, 32, 'aes-256-encryption', $salt);
$authenticationKey = hash_hkdf('sha256', $inputKey, 32, 'sha-256-authentication', $salt);
var_dump($encryptionKey !== $authenticationKey); // bool(true)
?>`

L'exemple ci-dessus produit une paire de clés séparé, qui convient à la création d'une construction chiffrer-puis-HMAC (encrypt-then-HMAC), en utilisant AES-256 et SHA-256 pour le chiffrement et l'authentification respectivement.

### Voir aussi

- hash_pbkdf2() - Génère une clé PBKDF2 dérivée du mot de passe fourni
- » RFC 5869
- » userland implementation