(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.
hashUn hash creado por la función password_hash().
algoUna constante del algoritmo de contraseña que representa el algoritmo a utilizar durante el hasheo de la contraseña.
optionsUn array asociativo que contiene las opciones. Ver también las constantes del algoritmo de contraseña para la documentación sobre las opciones soportadas para 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 string, pero
sigue aceptando un entero 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
}
?>