(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
,$password
,$salt
,$iterations
,$length
= 0,$binary
= false
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 = 1000;
// Génère un IV cryptographiquement securise 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.