Проверяет, что указанный хеш соответствует заданным опциям

# password_needs_rehash

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

password_needs_rehash — Проверяет, что указанный хеш соответствует заданным опциям

### Описание

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

Проверяет, что указанный хеш соответствует заданным опциям и заданному алгоритму. Если нет, то можно сделать вывод о том, что хеш надо пересоздать.

### Список параметров

`hash`

  Хеш, который создаёт функция password_hash().

`algo`

  Константа алгоритма хеширования пароля, который будет использовать функция.

`options`

  Ассоциативный массив с опциями. За документацией по поддерживаемым опциям для каждого алгоритма обратитесь к разделу Константы алгоритмов хеширования паролей.

### Возвращаемые значения

Возвращает `true`, если пароль должен быть перехеширован с использованием алгоритма `algo` и опций `options`, или `false`, если нет.

### Список изменений

Версия | Описание
--- | ---
7.4.0 | Параметр `algo` теперь ожидает строку (string), но всё ещё принимает число (int) для обратной совместимости.

### Примеры

Пример #1 Пример использования password_needs_rehash()

    <?php

    $password = 'rasmuslerdorf';
    $hash = '$2y$12$4Umg0rCJwMswRw/l.SwHvuQV01coP0eWmGzd61QH2RvAOMANUBGC.';

    $algorithm = PASSWORD_BCRYPT;
    // Значение bcrypt-стоимости может измениться по мере роста производительности оборудования
    $options = ['cost' => 13];

    // Сравниваем сохранённый хеш с открытым паролем
    if (password_verify($password, $hash)) {
        // Проверяем, не изменился ли алгоритм или параметры
        if (password_needs_rehash($hash, $algorithm, $options)) {
            // Если были изменения, перехешируем и заменяем старый хеш новым
            $newHash = password_hash($password, $algorithm, $options);

            // Обновляем запись пользователя новым $newHash
        }

        // Авторизуем пользователя
    }
    ?>

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