PHP 5.6.0 released

password_verify

(PHP 5 >= 5.5.0)

password_verifyVérifie qu'un mot de passe correspond à une table de hachage

Description

boolean password_verify ( string $password , string $hash )

Vérifie que la table de hachage fournie correspond bien au mot de passe fourni.

Notez que la fonction password_hash() retourne l'algorithme, le "cost", et le salt comme partis du hache retourné. Toutefois, toutes les informations nécessaires pour vérifier le hachage y sont incluses. Ceci permet à la fonction de vérifier le hachage sans avoir besoin d'un stockage séparé pour les informations concernant l'algorithme et le salt.

Liste de paramètres

password

Le mot de passe utilisateur.

hash

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

Valeurs de retour

Retourne TRUE si le mot de passe et la table de hachage correspondent, ou FALSE sinon.

Exemples

Exemple #1 Exemple avec password_verify()

<?php
// Voir l'exemple fourni sur la page de la fonction password_hash()
// pour savoir d'où cela provient.
$hash '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (
password_verify('rasmuslerdorf'$hash)) {
    echo 
'Le mot de passe est valide !';
} else {
    echo 
'Le mot de passe est invalide.';
}
?>

L'exemple ci-dessus va afficher :

Le mot de passe est valide !

Voir aussi

add a note add a note

User Contributed Notes 3 notes

up
18
Vasil Toshkov
10 months ago
This function can be used to verify hashes created with other functions like crypt(). For example:

<?php

$hash
= '$1$toHVx1uW$KIvW9yGZZSU/1YOidHeqJ/';

if (
password_verify('rasmuslerdorf', $hash)) {
    echo
'Password is valid!';
} else {
    echo
'Invalid password.';
}

// Output: Password is valid!

?>
up
2
suit at rebell dot at
10 months ago
As Vasil Toshkov stated, password_verify() can be used to verify a password created by crypt() or password_hash()

That is because passwords created by password_hash() also use the C crypt sheme

If you want to verify older plain MD5-Hashes you just need to prefix them with $1$

See https://en.wikipedia.org/wiki/Crypt_(C) for more information.
up
0
Anonymous
3 months ago
If you get incorrect false responses from password_verify when manually including the hash variable (eg. for testing) and you know it should be correct, make sure you are enclosing the hash variable in single quotes (') and not double quotes (").

PHP parses anything that starts with a $ inside double quotes as a variable:

<?php
// this will result in 'Invalid Password' as the hash is parsed into 3 variables of
// $2y, $07 and $BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq
// due to it being enclosed inside double quotes
$hash = "$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq";

// this will result in 'Password is valid' as variables are not parsed inside single quotes
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (
password_verify('rasmuslerdorf', $hash)) {
    echo
'Password is valid!';
} else {
    echo
'Invalid password.';
}
?>
To Top