0

ユーザーをカスタム システムに切り替えようとしている vBulletin データベースがあります。ユーザー名とパスワードを変換し、MD5 の二重パスワードを SHA256 に変換しましたが、1 つの問題が残っています。それは塩です。

古い vBulletin ソルトを変換するか、パスワードが正しいかどうかを確認してから、初めてログインするときに新しいソルトを生成する最も簡単な方法は何でしょうか?

スクリプトの確認:

$vbconvert = md5(md5($_POST["password"]));
$check_password = hash('sha256', $vbconvert . $row['salt']); 
for($round = 0; $round < 65536; $round++) 
{ 
      $check_password = hash('sha256', $check_password . $row['salt']); 
} 

if($check_password === $row['password']) 
{ 

      $login_ok = true; 
} 

要するに、新しいソルトを変換または作成する最も簡単な方法は何ですか?

4

1 に答える 1

0

PHP 関数password_hash()について知っていますか。これは、パスワードをハッシュするための推奨される方法です。各パスワードに対して暗号的に安全なソルトを自動的に生成し、結果の 60 文字の文字列に含めます。

$2y$10$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa

上記の例は、password_hash() の可能な結果です。part を見てください$nOUIs5kJ7naTuTFkBy1veu。これは生成されたソルトであり、関数 password_verify() によってパスワードをチェックするために使用されます。

もうソルトについて心配する必要はありません。追加のデータベース フィールドは必要ありません。ハッシュを保存するだけで問題ありません。

パスワードを移行する最も簡単な方法は、ユーザーが次回ログインするまで待つことです。彼がパスワードを入力すると、ハッシュがすでに移行されているかどうかを確認でき、次に password_verify() で確認できます。まだ移行されていない場合は、古い vBulletin コードで確認してください。パスワードが正しい場合は、password_hash() を使用して新しいハッシュを生成し、保存してください。

于 2013-10-30T12:07:54.510 に答える