# password_needs_rehash

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

password_needs_rehash — Vérifie que le hachage fourni est conforme à l'algorithme et aux options spécifiées

### Description

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

Cette fonction vérifie que le hachage fourni correspond à l'algorithme et aux options spécifiées. Si ce n'est pas le cas, le hachage devrait être re-généré.

### Liste de paramètres

`hash`

  Un hachage créé par la fonction password_hash().

`algo`

  Une constantes de l'algorithme de mot de passe représentant l'algorithme à utiliser lors du hachage du mot de passe.

`options`

  Un tableau associatif contenant les options. Voir aussi les constantes de l'algorithme de mot de passe pour une documentation sur les options supportées pour chaque algorithme.

### Valeurs de retour

Retourne `true` si le hachage doit être re-généré pour correspondre aux paramètres `algo` et `options` fournis, ou `false` sinon.

### Historique

Version | Description
--- | ---
7.4.0 | Le paramètre `algo` attend désormais une chaîne de caractères, mais continue d'accepter un entier afin de conserver une compatibilité antérieure.

### Exemples

Exemple #1 Usage de password_needs_rehash()

`<?php
$password = 'rasmuslerdorf';
$hash = '$2y$12$4Umg0rCJwMswRw/l.SwHvuQV01coP0eWmGzd61QH2RvAOMANUBGC.';
$algorithm = PASSWORD_BCRYPT;
// Le paramètre cost de bcrypt peut évoluer avec le temps en fonction des améliorations matérielles.
$options = ['cost' => 13];
// Vérifions d'abord que le mot de passe correspond au hachage stocké
if (password_verify($password, $hash)) {
// Vérifie si soit l'algorithme ou les options ont changé
if (password_needs_rehash($hash, $algorithm, $options)) {
if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
// On crée un nouveau hachage afin de mettre à jour l'ancien
$newHash = password_hash($password, $algorithm, $options);
// Mettre à jour l'entré de l'utilisateur avec $newHash
}
// Exécute la connexion de l'utilisateur
}
?>`