2015 Northeast PHP Conference

password_verify

(PHP 5 >= 5.5.0)

password_verifyÜberprüft, ob ein Passwort und ein Hash zusammenpassen

Beschreibung

boolean password_verify ( string $password , string $hash )

Überprüft, ob ein Passwort und ein Hash zusammenpassen.

Beachte, dass password_hash() den Algorithmus, den Aufwand und den Salt als Teil des Hashes zurückgibt. Somit sind alle benötigten Informationen im Hash enthalten, was der Funktion erlaubt den Hash zu prüfen, ohne dass Informationen über den Salt oder den Algorithmus an anderer Stelle gespeichert werden müssen.

Parameter-Liste

password

Das Passwort des Benutzers.

hash

Ein Hash, der durch password_hash() erzeugt wurde.

Rückgabewerte

Gibt TRUE zurück, falls Password und Hash zusammenpassen, sonst FALSE.

Beispiele

Beispiel #1 password_verify()-Beispiel

<?php
// Siehe auch das password_hash() Beispiel in diesem Kontext
$hash '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (
password_verify('rasmuslerdorf'$hash)) {
    echo 
'Valides Passwort!';
} else {
    echo 
'Invalides Passwort.';
}
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Valides Passwort!

Siehe auch

add a note add a note

User Contributed Notes 3 notes

up
33
Anonymous
11 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.';
}
?>
up
24
Vasil Toshkov
1 year 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
3
suit at rebell dot at
1 year 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.
To Top