0

php/mysql...

$username = 'Admin';
$password = 'gf45_gdf#4hg';

$salt = hash('sha256', uniqid(mt_rand(), true) . 'a random string will go here' . strtolower($username));

$hash = $salt . $password;

for ( $i = 0; $i < 100000; $i ++ ) {
     $hash = hash('sha256', $hash); }

$hash = $salt . $hash;

ユーザーがログインしたいときにPHPでパスワードを検証するにはどうすればよいですか?

4

2 に答える 2

1

まったく同じ手順を実行して、結果が一致するかどうかを確認します。

これは、送信されたパスワードに一致するパスワードが保存されているかどうかを確認するための一般的な手順です。

  • 既知のパスワードをハッシュして保存する関数を作成し、通常はそれをソルトします
  • それをデータベースに保存します
  • ユーザーがログインするためにパスワードを送信すると、まったく同じハッシュおよびソルティング アルゴリズムを実行し、結果のハッシュがデータベースに保存されているハッシュと一致するかどうかを確認します。

代わりに bcrypt を使用することも検討する必要があります: How do you use bcrypt for hashing passwords in PHP?

于 2013-04-18T00:11:28.480 に答える
0

上記で概説したプロセスを同様に模倣する関数を PHP 内で作成することをお勧めします。そうすれば、送信された資格情報を検証しようとするときに、ランダム ソルトの生成を除いて、構想中と同じハッシュ プロセスでパスワードを実行します。

于 2013-04-18T00:14:09.520 に答える