2009-03-14 9 views
0

Here ist die Website. Wer ist mit dieser Klasse vertraut, meine Frage ist diesmit phppas blowfish verschlüsselung (von wordpress verwendet)

Ich werde die Klasse auf dieser Seite verwenden, um das Kennwort für Mitglieder Hash. Der Code Erklärung sieht so etwas wie dies

require_once("password.hash.php"); 
$blowfish = new PasswordHash(8, FALSE); 
$blowfish->HashPassword($_POST['password']); 

, dass ich habe bemerkt, wenn das Passwort in einem Textfeld eingegeben wird, sage ich das Passwort sarmenhb eingeben, die Hash, der erstellt wird, bleibt nicht das gleiche, wo als ob ich es mit md5 gemacht hätte. Ich habe festgestellt, dass sich das Passwort bei jeder Eingabe ändert sarmenhb.

Wie überprüfe ich, ob das vom Benutzer eingegebene Passwort mit dem in der Datenbank übereinstimmt?

Ich habe versucht, diese

$blowfish->checkpassword($_POST['password'],"password in db"); 

aber nichts zeigt sich der Bildschirm leer ist.

Ich mache das im Test, deshalb sind die Felder nicht maskiert. Ich will nur sehen, ob es funktioniert, aber ich bekomme keine Ergebnisse. Gibt es eine Alternative ??

ps: Ich mache das nicht für WordPress, es ist nur lokal auf meinem eigenen mvc.

Update:

Ich habe versucht, diese

include("classes/hash.class.php"); 

$sec = new PasswordHash(8, FALSE); 
$correct = "sarmenhb"; 
//pass generated from $sec->HashPassword($correct); 
$hash = "\$P$\BeJb51gIUh8Qmb1DAW.Hkt1I4gnm2C1"; 
$check = $sec->CheckPassword($correct, $hash); 

if($check) { print "correct"; } 
else { print "incorrect"; } 

und wenn ich es laufen die Ausgabe hält zeigt nicht korrekt.

+0

Wie wäre es mit einigen Beispielen für tatsächliche Ein- und Ausgänge? Mehr Details hilft ;-) –

Antwort

1

In der Hash-Variablen haben Sie die Schrägstriche, um das $ zu vermeiden, aber diese Schrägstriche sind dann Teil der tatsächlichen Zeichenfolge, wenn der Hash nach $ P $ sucht, um die ersten 3 Zeichen der Zeichenfolge zu sein. Wenn Sie es auf einfache Anführungszeichen ändern, und entfernen Sie die Schrägstriche wird es

arbeiten

$hash = '$P$BeJb51gIUh8Qmb1DAW.Hkt1I4gnm2C1';

Ich bin eher obwohl verwirrt von Ihnen nichts sagen, zeigt sich, wenn $ Blowfish-> check ($ _ POST [ ‚password‘ tun ], "password in db"); natürlich wird nichts angezeigt, es gibt wahr oder falsch zurück, aber es wird nichts gedruckt, wenn es nicht mit mehr Code kombiniert wird. Stellen Sie sicher, dass das in der Datenbank gespeicherte Passwort nicht maskiert oder in irgendeiner Form geändert wurde. Versuchen Sie, die Variable zu drucken, die Sie dafür verwenden?

Das Hash-Passwort bleibt nicht gleich, da es bei jeder Verwendung gesalzen wird. Es ist in Ordnung, weil der Hash das Salz enthält, wo es später zu vergleichen ist. Salze sind nur zufällige Zeichen/Zahlen/Symbole, um mehr Varianz zu dem Hash hinzuzufügen, um es schwierig zu machen, zu knacken.

Verwandte Themen