Fonction PHP password_needs_rehash()
Algorithmes de hachage de mots de passe PHP
La fonction password_hash() est utilisée pour détecter si une valeur de hachage correspond aux options spécifiées.
Prérequis de version PHP : PHP 5 >= 5.5.0, PHP 7
Syntaxe
bool password_needs_rehash ( string $hash , int $algo [, array $options ] )
Description des paramètres :
- hash : Une valeur de hachage créée par password_hash().
- algo : Une constante d'algorithme de mot de passe utilisée pour indiquer l'algorithme lors du hachage des mots de passe.
- options : Un tableau associatif contenant des options. Il prend actuellement en charge deux options : salt, le sel (chaîne d'interférence) ajouté lors du hachage du mot de passe, et cost, qui indique le nombre de couches de récursion de l'algorithme. Des exemples de ces deux valeurs sont disponibles sur la page crypt(). S'il est omis, une valeur de sel aléatoire et un coût par défaut seront utilisés.
Valeur de retour
Cette fonction vérifie si la valeur de hachage spécifiée implémente l'algorithme et les options fournis. Si ce n'est pas le cas, la valeur de hachage doit être régénérée.
Exemples
Utilisation de password_needs_rehash()
$password = 'rasmuslerdorf';
$hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS';
//Lorsque les performances matérielles s'améliorent, le paramètre cost peut être modifié à nouveau.
$options = array('cost' => 11);
//Vérifier le hachage stocké par rapport au mot de passe en clair.
if (password_verify($password, $hash)) {
//Détecter s'il existe un algorithme de hachage plus récent disponible.
//Ou si le coût change.
if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
//Si tel est le cas, créez un nouveau hash et remplacez l'ancien.
$newHash = password_hash($password, PASSWORD_DEFAULT, $options);
}
//Connectez l'utilisateur.
}