0

crypt() 関数でパスワードを暗号化しました。ユーザーがログインしたいとき、これを入力してデータベースに保存されているパスワードを確認するにはどうすればよいですか?

例:

$pass = "fgyi34".$pass."@1187Gh";

$hashed_password = crypt($pass);
4

4 に答える 4

0

暗号化パスワードは元に戻すことができないため、以下の手順に従ってパスワードを暗号化します。

1) 乱数を生成し、それを暗号化します。2) 暗号化後、それをデータベース列フィールドに保存します。3) ログイン時に、入力したパスワードを照合し、再度暗号化します。4) ハッシュされたパスワードでこの新しいパスワードを確認します。

于 2013-08-20T06:24:25.140 に答える
0

読んでManualください。

ハッシュのベースとなるオプションのソルト文字列。指定しない場合、動作はアルゴリズムの実装によって定義され、予期しない結果につながる可能性があります

例 #1

<?php
  $hashed_password  = crypt( 'mypassword' ); // let the salt be automatically generated

  /*
    You should pass the entire results of crypt() as the salt for comparing a
    password, to avoid problems when different hashing algorithms are used. (As
    it says above, standard DES-based password hashing uses a 2-character salt,
    but MD5-based hashing uses 12.)
  */
  if ( crypt( $user_input, $hashed_password ) == $hashed_password ) {
    echo "Password verified!";
  }
?>

したがって、ユーザーがログインしようとするたびに、passwordデータベースから暗号化されたものを取得し、と の両方をusername比較します。 user inputhashed passwordcrypt

例 #2

<?php
  $username = $_POST["username"];
  $password = $_POST["password"];

  $passhash = "SELECT `password` FROM `table` WHERE `username` = '{$username}'";
  // execute the query and get the hashed password

  if ( $passhash ) {
    if ( crypt( $password, $passhash ) == $passhash ) {
      echo "Password verified!";
    }
  }
?>
于 2013-08-20T06:40:44.190 に答える