hash_pbkdf2
(PHP 5 >= 5.5.0)
hash_pbkdf2 — Genera una derivación de clave PBKDF2 de una contraseña proporcionada
Descripción
$algo
, string $password
, string $salt
, int $iterations
[, int $length = 0
[, bool $raw_output = false
]] )Parámetros
-
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_outputesTRUE, se corresponde con la longitud en bytes de la clave derivada; siraw_outputesFALSE, 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.FALSEgenera dígitos hexadecimales en minúsculas.
Valores devueltos
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.
Errores/Excepciones
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).
Ejemplos
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
Notas
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.
Ver también
- crypt() - Hash de cadenas de un sólo sentido
- password_hash() - Crea un nuevo hash de contraseña
- hash() - Genera un valor cifrado con base a un string
- hash_algos() - Devuelve una lista con los algoritmos de cifrado soportados
- hash_init() - Inicializa un contexto incremental para cifrar
- hash_hmac() - Genera un valor cifrado mediante una clave especificada usando el método HMAC
- hash_hmac_file() - Genera un valor cifrado mediante una clave especificada usando el método HMAC y el contenido de un fichero dado