2009-03-14 11 views
0

Hereはサイトです。このクラスに精通している人は、私の質問はこれですphppasブローフィッシュ暗号化(ワードプレスで使用)を使用

メンバーのパスワードをハッシュするためにそのページにあるクラスを使用します。コード宣言は、私が作成されるハッシュが同じ場所に滞在しない、パスワードがテキストフィールドに入力されたとき、私は sarmenhbパスワードを入力すると言うことに気付きました。この

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

ようになりますあたかもmd5でやったかのように。入力するたびにパスワードが変わることに気づいたsarmenhb

ユーザーが入力したパスワードとデータベースのパスワードが一致するかどうかを確認するにはどうすればよいですか?

私はこの

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

を試してみたが、何も画面に何も表示されない現れません。

私はフィールドでエスケープされていない理由ですテストでこれをやっています。私はちょうどそれが動作するかどうかを見たいが、私は結果が得られていない。代わりはありますか?

ps:私はwordpressのためにこれをやっていません、それはちょうど私のmvcのローカルです。

更新:

私はこの

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"; } 

を試みたと私はそれを実行すると、出力が不正示し続けます。

+0

実際の入力と出力の例はどうですか?より詳細に役立ちます;-) –

答えて

1

ハッシュ変数では$をエスケープするためのスラッシュがありますが、ハッシュが$ P $が文字列の最初の3文字であるかどうかをチェックすると、そのスラッシュは実際の文字列の一部になります。あなたは一重引用符に変更して、スラッシュを削除した場合には、

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

に動作します私は$ blowfish->のcheckpassword($ _ POST [「password」を行うときには何も現れないと言って、あなたによってけれども、むしろ混乱しています]、 "password in db");もちろん、何も表示されませんが、真または偽を返しますが、より多くのコードと組み合わせない限り、何も印刷されません。データベースに格納されているパスワードが何らかの形でエスケープまたは変更されていないことを確認してください。あなたのためにそれを使用して変数を印刷してみてください?

ハッシュされたパスワードは、使用するたびに塩漬されているため同じではありません。ハッシュには塩が含まれているため、後で比較することができます。塩は単なるランダムな文字/数字/記号で、ハッシュに変更を加えてクラックさせにくくしています。

関連する問題