(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
algo
Nom de l'algorithme de hachage sélectionné (i.e. md5
, sha256
, haval160,4
, etc..). Voir la fonction hash_algos() pour une liste des algorithmes supportés.
password
Le mot de passe à utiliser pour la dérivation.
salt
Le salt à 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ée sur deux hexits).
Si 0
est passé, la sortie complète de l'algorithme choisi sera utilisée.
binary
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 binary
ne soit positionné à true
auquel cas, la représentation binaire brute de la clé dérivée sera retournée.
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 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. |
8.0.0 | Lève une exception ValueError dorénavant en cas d'erreur. Précédemment, false était retourne et un message E_WARNING était émis. |
Exemple #1 Exemple avec hash_pbkdf2()
<?php
$password = "password";
$iterations = 600000;
// Génère un sel cryptographiquement sécurise 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 brute, $length doit être divisé par deux pour des résultats équivalent
$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"
La méthode PBKDF2 peut être utilisée pour hacher 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.