(PHP 5 >= 5.5.0, PHP 7)
hash_pbkdf2 — Génère une clé PBKDF2 dérivée du mot de passe fourni
$algo
, string $password
, string $salt
, int $iterations
[, int $length = 0
[, bool $raw_output = FALSE
]] ) : string
algoNom de l'algorithme de hashage sélectionné (i.e. md5, sha256, haval160,4, etc..). Voir la fonction hash_algos() pour une liste des algorithmes supportés.
passwordLe mot de passe à utiliser pour la dérivation.
saltLe salt à utiliser pour la dérivation. Cette valeur doit être générée aléatoirement.
iterationsLe nombre d'itérations internes pour effectuer la dérivation.
length
La longueur de la chaîne de sortie. Si le paramètre
raw_output vaut TRUE, ce paramètre
correspondra à la longueur, en octets, de la clé dérivée ; si
le paramètre raw_output 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ée sur
deux hexits).
Si 0 est passé, la sortie complète de l'algorithme choisi sera utilisée.
raw_output
Lorsque définit à TRUE, la fonction affichera les données
binaires brutes. Si vaut FALSE, l'affichage se fera
en minuscule.
Retourne une chaîne contenant la clé dérivée en minuscule,
à moins que le paramètre raw_output ne
soit positionné à TRUE auquel cas, la représentation binaire brute
de la clé dérivée sera retournée.
Une alerte de type E_WARNING sera émise 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 ou égale à 0
ou si le salt est trop long
(plus grand que INT_MAX - 4).
| Version | Description |
|---|---|
| 7.2.0 | L'utilisation de fonctions de hachage non cryptographiques (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) a été désactivée. |
Exemple #1 Exemple avec hash_pbkdf2()
<?php
$password = "password";
$iterations = 1000;
// Génère un IV aléatoire en utilisant la fonction openssl_random_pseudo_bytes(),
// random_bytes() ou tout autre source aléatoire correspondante
$salt = openssl_random_pseudo_bytes(16);
$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);
echo $hash;
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
120fb6cffcf8b32c43e7
La méthode PBKDF2 peut être utilisée pour hasher des mots de passe
pour le stockage. Cependant, vous devez garder à l'esprit que
la fonction password_hash() ou la fonction
crypt() avec la constante CRYPT_BLOWFISH
est meilleur pour cet usage.