PHP - Fonction Hash pbkdf2 ()

Définition et utilisation

le hash_​pbkdf2() La fonction renvoie la dérivation de clé PBKDF2 pour le mot de passe donné.

Le PBKDF2 signifie la fonction de dérivation de clé basée sur le mot de passe 2. La fonction de dérivation de clé PBKDF2 utilise une fonction pseudo-aléatoire, telle que le code d'authentification de message basé sur le hachage (HMAC) qui est appliqué au mot de passe ou au message donné avec le sel et le processus est répété plusieurs fois pour obtenir la clé. Il est principalement utilisé pour hacher le mot de passe et la fonction de dérivation de clé PBKDF2 est conçue de telle manière qu'il devient difficile pour l'attaquant de deviner le mot de passe d'origine haché.

Syntaxe

hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [
   , int $length = 0 [, bool $raw_output = FALSE ]
] ) : string

Paramètres

Sr. Non Paramètre et description
1

algo

Nom de l'algorithme de hachage. Il existe une grande liste d'algorithmes disponibles avec hachage, certains importants sont md5, sha256, etc.

Pour obtenir la liste complète des algorithmes pris en charge, vérifiez hash_algos ()

2

password

Mot de passe pour lequel vous devez générer la dérivation de clé PBKDF2.

3

salt

Salt que vous souhaitez utiliser pour dériver la dérivation de clé PBKDF2.

4

iterations

Les interactions internes à effectuer pour arriver à la dérivation finale.

5

length

La longueur finale de dérivation de clé PBKDF2. Si raw_output est TRUE, la clé dérivée correspond à la longueur d'octet, si raw_output est FALSE, ce sera deux fois la longueur d'octet de la clé dérivée

6

raw_output

Si le raw_output est faux, la sortie sera une chaîne avec des hexs minuscules, si TRUE la sortie sera des données binaires brutes.

Valeurs de retour

le hash_​pbkdf2() renvoie une chaîne dont la clé dérivée est en hexadécimal minuscule, si raw_output est false et si raw_output est défini sur TRUE, la chaîne sera une représentation binaire brute de la clé dérivée.

Version PHP

Cette fonction fonctionnera à partir de la version PHP supérieure à 5.5.0.

Exemple 1

Utilisation de hash_pbkdf2 () -

<?php
   $password = "mypassword";
   $iterations = 500;
   $salt = 'testingkey';
   $pbkdf2_hash = hash_pbkdf2("md5", $password, $salt, $iterations, 25);
   echo $pbkdf2_hash;	
?>

Production

Cela produira le résultat suivant -

cb0130970bb39f6a95d193934

Exemple 2

Utilisation de hash_pbkdf2 () avec 1000 itérations -

<?php
   $password = "mypassword";
   $iterations = 1000;
   $salt = openssl_random_pseudo_bytes(10); //generates pseudo-random string of bytes
   $pbkdf2_hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10);
   echo $pbkdf2_hash;
?>

Production

Cela produira le résultat suivant -

0c31d20aa2

Exemple 3

Utiliser hash_pbkdf2 () avec raw_output comme vrai -

<?php
   $password = "mypassword";
   $iterations = 1000;
   $salt = openssl_random_pseudo_bytes(10); //generates pseudo-random string of bytes
   $pbkdf2_hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10, true);
   echo $pbkdf2_hash;
?>

Exemple 4

Utiliser hash_pbkdf2 () avec raw_output comme vrai -

Dans l'exemple, nous utiliserons la fonction PHP base64_encode () qui convertira la sortie binaire brute de hash_pbkdf2 () en une chaîne réalisable.

<?php
   echo base64_encode(
      hash_pbkdf2("sha256", 'passwordtest', openssl_random_pseudo_bytes(10), 5000, 10, true)
   );
?>

Production

Cela produira le résultat suivant -

2FogGKtZxmt4iQ==