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

# password_needs_rehash

(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

### Descripción

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open