(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.