(PHP 5 >= 5.5.0, PHP 7, PHP 8)
hash_pbkdf2 — Genera una clave PBKDF2 derivada de la contraseña proporcionada
algo
Nombre del algoritmo de hash seleccionado (por ejemplo: "sha256"
).
Para una lista de los algoritmos soportados ver hash_hmac_algos().
Nota:
Las funciones de hash no criptográficas no están permitidas.
password
La contraseña a utilizar para la derivación.
salt
El salt a utilizar para la derivación. Este valor debe ser generado aleatoriamente.
iterations
El número de iteraciones internas para efectuar la derivación.
length
La longitud de la cadena de salida. Si el parámetro
binary
vale true
, este parámetro
corresponderá a la longitud, en bytes, de la clave derivada; si
el parámetro binary
vale false
,
corresponderá al doble de la longitud, en bytes, de la clave
derivada (ya que cada byte de la clave es devuelto sobre
dos hexits).
Si 0
es pasado, la salida completa del algoritmo
elegido será utilizada.
binary
Cuando está definido a true
, la función mostrará los datos
binarios brutos. Si vale false
, la visualización se hará
en minúsculas.
options
Un array de opciones para los diferentes algoritmos de hash.
Actualmente, solo la clave "seed"
es
soportada por las variantes MurmurHash.
Devuelve una cadena que contiene la clave derivada en minúsculas,
a menos que el parámetro binary
esté
posicionado a true
en cuyo caso, la representación binaria bruta
de la clave derivada será devuelta.
Una excepción ValueError si
el algoritmo no es conocido, si el parámetro iterations
es inferior o igual a 0
, si la longitud
length
es inferior o igual a 0
o si el salt
es demasiado largo
(mayor que INT_MAX
- 4
).
Versión | Descripción |
---|---|
7.2.0 | El uso de funciones de hash no criptográficas (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) ha sido desactivado. |
8.0.0 |
Levanta una excepción ValueError ahora en
caso de error.
Anteriormente, false era devuelto y un mensaje
E_WARNING era emitido.
|
Ejemplo #1 Ejemplo con hash_pbkdf2()
<?php
$password = "password";
$iterations = 600000;
// Genera un salt criptográficamente seguro aleatorio usando la función random_bytes(),
$salt = random_bytes(16);
$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);
var_dump($hash);
// Para binario bruto, $length debe ser dividido por dos para resultados equivalentes
$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10, true);
var_dump(bin2hex($hash));
?>
El resultado del ejemplo sería algo similar a:
string(20) "120fb6cffcf8b32c43e7" string(20) "120fb6cffcf8b32c43e7"
El método PBKDF2 puede ser utilizado para hashear contraseñas
para el almacenamiento. Sin embargo, debe tenerse en cuenta que
la función password_hash() o la función
crypt() con la constante CRYPT_BLOWFISH
es mejor para este uso.