1

これは、ランダムソルトでパスワードをハッシュするための私のコードです。しかし残念なことに、それはうまくいきません。間違ったパスワードを与えてしまいます。

ユーザーが資格情報をエンコードするスクリプトのパート 1。

<?php
  echo "enter the username \n";
  $username = trim(fgets(STDIN));
  echo "enter the password\n";
  $password = trim(fgets(STDIN));
  //connecting to database
  $con=mysqli_connect("localhost","sqldata","sqldata","accounts");
  // Check connection
  if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  $salt = time();
  $hashedPassword = sha1($password . $salt);
  echo "$hashedPassword";
  mysqli_query($con,"INSERT INTO login (username, salt, password)
    VALUES ('$username', '$hashedPassword','$salt')");
  mysqli_close($con)
?>

ユーザーが資格情報を入力するスクリプトの 2 番目の部分。

<?php
  echo "enter the username \n";
  $username = trim(fgets(STDIN));
  echo "enter the password\n";
  $password = trim(fgets(STDIN));
  //connecting to database
  $db = mysql_connect("localhost","sqldata","sqldata") or die(mysql_error());
  //selecting our database
  $db_select = mysql_select_db("accounts", $db) or die(mysql_error());
  $result= mysql_query("select * from login where username = '$username' ");
  if ( !$result ) exit("$userName wasn't found in the database!");
  $row = mysql_fetch_array($result);
  $storedPassword = $row['password'];
  $salt = $row['salt'];
  $hashedPassword = sha1($password . $salt);
  if ( $storedPassword != $hashedPassword ) {
    exit( 'incorrect password!' );
  } else {
    echo "ok";
  }
?>
4

1 に答える 1

2

塩を列に保存していますpassword。逆もまた同様です。

mysqli_query($con,"INSERT INTO login (username, salt, password)
   VALUES ('$username', '$hashedPassword','$salt')");

これを次のように変更します。

mysqli_query($con,"INSERT INTO login (username, password, salt)
   VALUES ('$username', '$hashedPassword','$salt')");
于 2013-05-10T01:48:27.223 に答える