0

crypt() を使用して安全なログイン & 登録システムをセットアップしようとしています。

ユーザーを登録していますが、パスワードを取得して暗号化しています。

$hashed_password = crypt($mypassword);

次に、$hashed_pa​​ssword をデータベースに保存します

次に、ユーザーがログインすると、パスワードを保存されているものと照合しようとしています。

php.net でこの関数を見つけましたが、動作させることができません

$password は保存された暗号化されたパスワードで、$mypassword はユーザー入力です

if ($password == crypt($mypassword, $password)) {
    echo "Success! Valid password";
}

crypt が呼び出されるたびに一意のハッシュを生成することを理解しているため、関数がどのように機能するかわかりません。

crypt() は 1 つの関数であり、復号化は存在しないことを読んだので、私は完全に要点を見逃していますか?

私のやり方の誤りを示すだけでなく、この安全なログインを完了するためにも、どんな助けも大いに感謝します

4

5 に答える 5

0

データベースからの暗号化されたパスワードが で、入力されたパスワードが であると仮定し$db_passます$new_pass。次に、それをテストする方法は次のとおりです。

if($db_pass === crypt($new_pass)){
    echo "Success!";
}

この投稿は役に立ちます...

于 2013-08-16T11:19:51.820 に答える
-3

ハッシュは一方向であるため、復号化できません。したがって、ハッシュを介して元の入力を取得することはできません。データベースにアクセスできる場合でも、ユーザーのパスワードを明らかにすることはできません。

次のように使用されています:ユーザーはパスワードを入力に書き込みます->フォームを送信します->パスワードは次のようにデータベースに入ります:

sha1($_POST['password']);

次に、このハッシュ化されたパスワードをデータベースに保存します。

ユーザーがログインしたいときはいつでも、フォームを再度送信すると、次のロジックが実行されます ( $result['password']) は、データベース クエリから取得されます。

if(sha1($_POST['password']) == $result['password']) {
  //password match, so lets log you -> set sessions, cookies and so on
}
于 2013-08-16T11:07:13.667 に答える