基本的な暗号化システムを作成することができたので、ユーザーが最初に私の Web サイトにサインアップすると、salt、md5、および sha1 を使用してパスワードがデータベースに安全に保存されます。
ユーザーがログインしているときに問題が発生し、同じ方法を使用しているにもかかわらず、データベースに送信される文字列 (パスワード) が異なります。以下に示します。
これは、salt 手法を使用して顧客をデータベースに追加する基本的な (今のところ) ページです。
require "dbconn.php";
$username = $_GET['username'];
$email = $_GET['email'];
$pass = $_GET['pwd1'];
$pass2 =$_GET['pwd2'];
$matching = 0;
if($pass == $pass2)
{
echo "<script type='text/javascript'> window.alert('Your details have been successfully registered, please proceed to login with your new credentials!')</script>";
echo '<script>javascript:window.close();</script>';
$salt = sha1(md5($pass));
$pass = md5($pass.$salt);
$query = "INSERT INTO customer VALUES ('".$username."','".$email."','".$pass."','face1.jpg')";
繰り返しますが、これは私の基本的な (今のところ) ログイン ページで、同じソルト手法を使用しています (このページの後半部分は省いています)。
session_start();
require "dbconn.php";
$username = $_GET['username'];
$password = $_GET['password'];
$salt = sha1(md5($password));
$password = md5($password.$salt);
$sql = "SELECT * FROM customer WHERE username ='".$username."' AND password='".$password."'";
私はいくつかのチェックを行い、パスワード名テストなどを使用してパスワードをデータベースに入れるとき: 34364c859afb02e70306c905374ac2 として保存されますが、ユーザーがログインするときのパスワードは: 34364c859afb02e70306c905374ac2d5 です。