(PHP 5 >= 5.5.0, PHP 7, PHP 8)
hash_pbkdf2 — Genera una derivación de clave PBKDF2 de una contraseña proporcionada
algo
El nombre del algoritmo hash seleccionado (esto es, "md5"
, "sha256"
, "haval160,4"
, etc.). Véase hash_algos() para una lista de los algoritmos admitidos.
password
La contraseña a usar para la derivación.
salt
La sal a usar para la derivación. Este valor debería ser generado aleatoriamente.
iterations
El número de iteraciones internas para realizar la derivación.
length
La longitud del string de salida. Si raw_output
es true
, se corresponde con la longitud en bytes de la clave derivada; si raw_output
es false
, se corresponde con dos veces la longitud en bytes de la clave derivada (ya que cada byte de la clave es devuelto como dos dígitos hexadecimales).
Si se pasa 0
, se usará la salida completa del algoritmo proporcionado.
raw_output
Cuando se establece a true
, genera datos binarios puros. false
genera dígitos hexadecimales en minúsculas.
Devuelve un string que contiene la clave derivada como dígitos hexadecimales en minúsculas, a menos que raw_output
sea establecido a true
, en cuyo caso devuelve la represetación binaria pura de la clave derivada.
Se emitirá un E_WARNING
si el algoritmo es desconocido, el parámetro iterations
es menor o igual a 0
, el parámetro length
es menor que 0
o el parámetro salt
es demasiado grande (mayor que INT_MAX
- 4
).
Ejemplo #1 Ejemplo de uso básico de hash_pbkdf2()
<?php
$contraseña = "password";
$iteraciones = 1000;
// Generar una IV aleatoria usando mcrypt_create_iv(),
// openssl_random_pseudo_bytes() u otra fuente disponible de aleatoriedad
$sal = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
$hash = hash_pbkdf2("sha256", $contraseña, $sal, $iteraciones, 20);
echo $hash;
?>
El resultado del ejemplo sería algo similar a:
120fb6cffcf8b32c43e7
El método PBKDF2 se puede usar para el almacenamiento de contraseñas de hash. Sin embargo, se debería observar que password_hash() o crypt() con CRYPT_BLOWFISH
son más adecuados para el almacenamiento de contraseñas.