password_needs_rehash

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

password_needs_rehashVerifica que el hash proporcionado cumple con el algoritmo y las opciones especificadas

Descripción

password_needs_rehash(string $hash, string|int|null $algo, array $options = []): bool

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.

Parámetros

hash

Un hash creado por la función password_hash().

algo

Una constante del algoritmo de contraseña que representa el algoritmo a utilizar durante el hasheo de la contraseña.

options

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

Valores devueltos

Devuelve true si el hash debe ser re-generado para corresponder a los parámetros algo y options proporcionados, o false en caso contrario.

Historial de cambios

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.

Ejemplos

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
}
?>