Génère une clé PBKDF2 dérivée du mot de passe fourni

# hash_pbkdf2

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

hash_pbkdf2 — Génère une clé PBKDF2 dérivée du mot de passe fourni

### Description

function hash_pbkdf2(
string `$algo`,
#[\SensitiveParameter]string `$password`,
string `$salt`,
int `$iterations`,
int `$length` = 0,
bool `$binary` = `false`,
array `$options` = []
): 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.

`password`

  Le mot de passe à utiliser pour la dérivation.

`salt`

  Le sel à utiliser pour la dérivation. Cette valeur doit être générée aléatoirement.

`iterations`

  Le nombre d'itérations internes pour effectuer la dérivation.

`length`

  La longueur de la chaîne de sortie. Si le paramètre `binary` vaut `true`, ce paramètre correspondra à la longueur, en octets, de la clé dérivée ; si le paramètre `binary` vaut `false`, il correspondra à deux fois la longueur, en octets, de la clé dérivée (vu que chaque octet de la clé est retourné sur deux hexits).

  Si `0` est passé, la sortie complète de l'algorithme choisi sera utilisée.

`binary`

  Lorsque `true`, retourne les données binaires brutes. Lorsque `false`, retourne des chiffres hexadécimaux en minuscule.

`options`

  Un tableau d'options pour les différents algorithmes d'hachage. Actuellement, seule la clé `"seed"` est supportée par les variantes MurmurHash.

### Valeurs de retour

Retourne une chaîne contenant la clé dérivée en minuscule, à moins que le paramètre `binary` ne soit positionné à `true` auquel cas, la représentation binaire brute de la clé dérivée est retournée.

### Erreurs / Exceptions

Lève une exception ValueError si l'algorithme n'est pas connu, si le paramètre `iterations` est inférieur ou égal à `0`, si la longueur `length` est inférieure à `0` ou si le `salt` est trop long (plus grand que `INT_MAX``- 4`).

### Historique

Version | Description
--- | ---
8.0.0 | Lève une exception ValueError dorénavant en cas d'erreur. Précédemment, `false` était retourné et un message `E_WARNING` était émis.
7.2.0 | L'utilisation de fonctions de hachage non cryptographiques (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) a été désactivée.

### Exemples

Exemple #1 Exemple avec hash_pbkdf2()

    <?php
    $password = "password";
    $iterations = 600000;

    // Génère un sel cryptographiquement sécurisé aléatoire en utilisant la fonction random_bytes()
    $salt = random_bytes(16);

    $hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);
    var_dump($hash);

    // Pour du binaire brut, $length doit être divisé par deux pour des résultats équivalents
    $hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10, true);
    var_dump(bin2hex($hash));
    ?>

Résultat de l'exemple ci-dessus est similaire à :

    string(20) "120fb6cffcf8b32c43e7"
    string(20) "120fb6cffcf8b32c43e7"

### Notes

Attention

La méthode PBKDF2 peut être utilisée pour hacher des mots de passe pour le stockage. Cependant, il faut garder à l'esprit que la fonction password_hash() ou la fonction crypt() avec la constante `CRYPT_BLOWFISH` sont mieux adaptées pour cet usage.

### Voir aussi

- password_hash() - Crée une clé de hachage pour un mot de passe
- hash_hkdf() - Génère une dérivation de clé HKDF depuis une clé fournie
- sodium_crypto_pwhash() - Dérive une clé à partir d'un mot de passe, en utilisant Argon2

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