認証システムを Blowfish に移行しようとしています。私は暗号学者ではなく、Blowfish についての理解はまだ十分ではありません。
現在の設定では、sha1 と salt を使用しています。ソルトはユーザーごとに生成され、データベースに保存されます。要約すると、次のようになります。
$salt = $this->getSalt($username);
$hash = sha1($password . $salt);
if ($hash == $hashInDB)
{
// user is authenticated, set session id etc ...
}
このgetSalt()
メソッドは、指定されたユーザーのデータベースに保存されているソルトを取得します。
今、すべてを正しく理解していれば、crypt を使用して次のことを行う必要があります。
$salt = '$2a$07$' . $this->getSalt($username) . '$';
$hash = crypt($password, $salt);
if ($hash == crypt($password, $saltInDB))
{
// The user is authenticated, set session id etc..
}
明確にするために、2 番目の例の$saltInDB
変数は、「$2a$07$arandomsaltcreatedatregistration$」のような値です。
- 私はそれを正しくやっていますか?