我已经设法创建了一个基本的加密系统,因此当用户最初注册我的网站时,密码会使用 salt、md5 和 sha1 安全地存储在我的数据库中。
现在当用户登录时出现问题,即使我使用相同的方法,发送到数据库的字符串(密码)也不同。我将在下面演示:
这是我使用盐技术将客户添加到数据库页面的基本(目前)。
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')";
这又是我的基本(目前)登录页面,再次使用相同的 salt 技术(我省略了此页面的后半部分)
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