hash_pbkdf2
(PHP 5 >= 5.5.0, PHP 7)
hash_pbkdf2 — Génère une clé PBKDF2 dérivée du mot de passe fourni
Description
$algo
, string $password
, string $salt
, int $iterations
[, int $length
= 0
[, bool $raw_output
= FALSE
]] ) : stringListe de paramètres
-
algo
-
Nom 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.
-
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
raw_output
vautTRUE
, ce paramètre correspondra à la longueur, en octets, de la clé dérivée ; si le paramètreraw_output
vautFALSE
, 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 vautFALSE
, l'affichage se fera en minuscule.
Valeurs de retour
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.
Erreurs / Exceptions
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).
Historique
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. |
Exemples
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
Notes
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.
Voir aussi
- crypt() - Hachage à sens unique (indéchiffrable)
- password_hash() - Crée une clé de hachage pour un mot de passe
- hash() - Génère une valeur de hachage (empreinte numérique)
- hash_algos() - Retourne une liste des algorithmes de hachage enregistrés
- hash_init() - Initialise un contexte de hachage incrémental
- hash_hmac() - Génère une valeur de clé de hachage en utilisant la méthode HMAC
- hash_hmac_file() - Génère une valeur de clé de hachage en utilisant la méthode HMAC et le contenu d'un fichier donné
- openssl_pbkdf2() - Génère une chaîne PKCS5 v2 PBKDF2
Version en cache
22/11/2024 17:08:48 Cette version de la page est en cache (à la date du 22/11/2024 17:08:48) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-hash-pbkdf2.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.