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

# hash_hkdf

(PHP 7 >= 7.1.2, PHP 8)

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

### Description

function hash_hkdf(
string `$algo`,
#[\SensitiveParameter]string `$key`,
int `$length` = 0,
string `$info` = "",
string `$salt` = ""
): string

### Liste de paramètres

`algo`

  Nom de l'algorithme de hachage sélectionné (par exemple : `"sha256"`). Pour une liste des algorithmes supportés voir hash_hmac_algos().

  > Note:

  > Les fonctions de hachage non cryptographiques ne sont pas autorisées.

`key`

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

`length`

  Longueur désirée 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 fonction 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'optionnel, ajouter 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 brute de la clé dérivée (aussi connue sous le nom de output keying material - OKM).

### Erreurs / Exceptions

Lève une exception ValueError si `key` est vide, `algo` est inconnu/non cryptographique, `length` est inférieur à `0` ou trop grand (plus grand que 255 fois la taille de la fonction de hachage).

### Historique

Version | Description
--- | ---
8.0.0 | Lève une exception ValueError en cas d'erreur dorénavant. Précédemment, `false` était retournée et un message `E_WARNING` était émis.

### Exemples

L’exemple ci-dessous génère une paire de clés distinctes, adaptée à la création d’une construction de type chiffrer-puis-HMAC, en utilisant AES-256 et SHA-256 respectivement pour le chiffrement et l’authentification.

Exemple #1 Exemple avec hash_hkdf()

    <?php
    // Génère une clé aléatoire, et un sel pour la renforcer lors de la dérivation.
    $inputKey = random_bytes(32);
    $salt = random_bytes(16);

    // Dérive une paire de clés séparées, utilisant les mêmes données créées 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)
    ?>

### Voir aussi

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open