(PHP 5 >= 5.5.0, PHP 7, PHP 8)
password_needs_rehash — Verifica que el hash proporcionado cumple con el algoritmo y las opciones especificadas
Esta función verifica que el hash proporcionado corresponde al algoritmo y a las opciones especificadas. Si no es así, el hash debería ser re-generado.
hash
Un hash creado por password_hash().
algo
A constante del algoritmo de contraseñas indicando qué algoritmo utilizar para crear el hash de la contraseña.
options
Un array asociativo de opciones. Véanse las constantes de algoritmos de contraseñas para la documentación sobre las opociones admitidas de cada algoritmo.
Devuelve true
si el hash debe ser re-generado para corresponder
a los parámetros algo
y options
proporcionados, o false
en caso contrario.
Versión | Descripción |
---|---|
7.4.0 |
El parámetro algo ahora espera una chaîne de caractères, pero
sigue aceptando un entier para mantener la compatibilidad con versiones anteriores.
|
Ejemplo #1 Uso de password_needs_rehash()
<?php
$password = 'rasmuslerdorf';
$hash = '$2y$12$4Umg0rCJwMswRw/l.SwHvuQV01coP0eWmGzd61QH2RvAOMANUBGC.';
$algorithm = PASSWORD_BCRYPT;
// El parámetro cost de bcrypt puede evolucionar con el tiempo según las mejoras de hardware.
$options = ['cost' => 13];
// Primero se verifica que la contraseña coincide con el hash almacenado
if (password_verify($password, $hash)) {
// Verifica si el algoritmo o las opciones han cambiado
if (password_needs_rehash($hash, $algorithm, $options)) {
if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
// Se crea un nuevo hash para actualizar el anterior
$newHash = password_hash($password, $algorithm, $options);
// Actualizar la entrada del usuario con $newHash
}
// Ejecutar el inicio de sesión del usuario
}
?>