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==