PHP - Función Hash pbkdf2 ()

Definición y uso

los hash_​pbkdf2() La función devuelve la derivación de clave PBKDF2 para la contraseña dada.

PBKDF2 significa Función de derivación de clave basada en contraseña 2. La función de derivación de clave PBKDF2 hace uso de una función pseudoaleatoria, como el código de autenticación de mensaje basado en hash (HMAC) que se aplica a la contraseña o mensaje dado junto con la sal y el proceso se repite varias veces para obtener la clave. Se utiliza principalmente para codificar contraseñas y la función de derivación de claves PBKDF2 está diseñada de tal manera que al atacante le resulta difícil adivinar la contraseña original.

Sintaxis

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

Parámetros

No Señor Descripción de parámetros
1

algo

Nombre del algoritmo hash. Hay una gran lista de algoritmos disponibles con hash, algunos importantes son md5, sha256, etc.

Para obtener la lista completa de algoritmos compatibles, verifique hash_algos ()

2

password

Contraseña para la que necesita generar derivación de clave PBKDF2.

3

salt

La sal que desea utilizar para derivar la derivación de la clave PBKDF2.

4

iterations

Las interacciones internas a realizar para llegar a la derivación final.

5

length

La longitud de derivación de clave PBKDF2 final. Si raw_output es TRUE, la clave derivada corresponde a la longitud del byte, si raw_output es FALSE, será el doble de la longitud del byte de la clave derivada

6

raw_output

Si raw_output es falso, la salida será una cadena con hexadecimales en minúsculas, si es TRUE, la salida serán datos binarios sin procesar.

Valores devueltos

los hash_​pbkdf2() devuelve una cadena que tiene la clave derivada en minúsculas, si raw_output es falso y si raw_output se establece en TRUE, la cadena será una representación binaria sin procesar de la clave derivada.

Versión PHP

Esta función funcionará desde la versión PHP superior a 5.5.0.

Ejemplo 1

Usando hash_pbkdf2 () -

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

Salida

Esto producirá el siguiente resultado:

cb0130970bb39f6a95d193934

Ejemplo 2

Usando hash_pbkdf2 () con 1000 iteraciones -

<?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;
?>

Salida

Esto producirá el siguiente resultado:

0c31d20aa2

Ejemplo 3

Usando hash_pbkdf2 () con raw_output como verdadero -

<?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;
?>

Ejemplo 4

Usando hash_pbkdf2 () con raw_output como verdadero -

En el ejemplo, se utilizará la función PHP base64_encode () que convertirá la salida binaria sin procesar de hash_pbkdf2 () en una cadena reabable.

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

Salida

Esto producirá el siguiente resultado:

2FogGKtZxmt4iQ==