password_needs_rehash

Checks if the given hash matches the given options

&reftitle.description; `bool` `password_needs_rehash` `string` `hash` ``string``int``null```algo` `array` `options`[]

This function checks to see if the supplied hash implements the algorithm and options provided. If not, it is assumed that the hash needs to be rehashed.

&reftitle.parameters;

`hash`

- &password.parameter.hash;

`algo`

- &password.parameter.algo;

`options`

- &password.parameter.options;

&reftitle.returnvalues;

Returns &true; if the hash should be rehashed to match the given `algo` and `options`, or &false; otherwise.

&reftitle.changelog;

&Version; | &Description;
7.4.0 | The `algo` parameter expects a &string; now, but still accepts &integer;s for backward compatibility.

&reftitle.examples;

### Usage of `password_needs_rehash`

    <?php

    $password = 'rasmuslerdorf';
    $hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS';

    $algorithm = PASSWORD_BCRYPT;
    // bcrypt's cost parameter can change over time as hardware improves
    $options = ['cost' => 12];

    // Verify stored hash against plain-text password
    if (password_verify($password, $hash)) {
        // Check if either the algorithm or the options have changed
        if (password_needs_rehash($hash, $algorithm, $options)) {
            // If so, create a new hash, and replace the old one
            $newHash = password_hash($password, $algorithm, $options);

            // Update the user record with the $newHash
        }

        // Perform the login.
    }
    ?>