1

それで。

ユーザー認証フォームにBCryptを使用したい。コードを使用してユーザーを登録できます

<?php
$salt = '$2a$07$R.gJb2U2N.FmZ4hPp1y2CN$';
crypt("secretpassword", $salt);
?>

ここでは、一定の塩を使用する代わりに。を使用してランダムな塩を生成したい

// Posted Code from http://pastebin.com/wLxDEhD7.
$Allowed_Chars =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./';
$Chars_Len = 63;
$salt = "";
for($i=0;$i<45 ;$i++)
{
    $salt .= $Allowed_Chars[mt_rand(0,$Chars_Len)];
}

そしてそれをデータベースに保存します。これまでは明確です(I Hope:D)次に必要なのは、ユーザーがログインするときにパスワードを確認することです。そのためには、ユーザーの入力データ、つまりそのユーザーに使用されるソルトが必要です。

crypt("secretpassword", $salt);

ユーザー入力を取得できますが、使用されたソルトをどのように知ることができますか?私はこれについてはっきりしていません。

コードはphpmaster.comとhttp://pastebin.com/wLxDEhD7からコピーされています(SOで尋ねられた質問から、私は再び質問を見つけることができません)これは純粋に教育目的で使用されています。

4

1 に答える 1

2

ソルトはBCryptによって生成されたハッシュ内に保存されます。したがって、これを行うだけで機能します。

$passwordIsOk = crypt($password, $hash) === $hash;
于 2013-01-16T06:59:48.917 に答える