0

bcryptハッシュメソッドとmysqlに問題があります。私はこの回答Bcryptのクラスを使用しています。

ログインスクリプトを作成し、パスワードが正しいかどうかを確認しています。入力からのパスワードとDBからのハッシュパスワードを比較しています。

$username= $_POST['username']; //username from input
$pass= $_POST['pass'];         //username from input

$query= mysql_query("SELECT pass FROM users WHERE username='$username'");
    $row=  mysql_fetch_row($query);

$row[0];// hashed password, I echo $row[0] and it shows correct hashed password

$bcrypt = new Bcrypt(15);
$isGood = $bcrypt->verify($pass, $row[0]);

if ($isGood){
echo "Authentication succeeded";
          }
else { 
    echo"Authentication failed";
   }

$ passが正しい場合でも、常に「認証に失敗しました」と表示されます。何かアイデア、何が間違っている可能性がありますか?

前もって感謝します。

4

2 に答える 2

1

テーブルのpass列はusers、完全なハッシュを格納するのに十分な幅がありません。幅は 60 文字以上にする必要がありますVARCHAR(60)

ところで、 ircmaxellによって作成および管理されているPasswordLibも確認する必要があります。これは、Bcrypt も十分にサポートしています。

于 2012-12-19T14:23:52.420 に答える
0

次のようなものを試してください。

$bcrypt = new Bcrypt(15);
$hash = $bcrypt->hash($pass);

echo $hash.' =? '.$row[0];

そしてそれが等しいかどうか見てください

はいの場合は、次のようにしてみてください。

var_dump($hash);
var_dump($row[0]);

等しくなければならない

于 2012-12-19T13:38:19.640 に答える