我有一个带有数据库哈希密码的登录表单,但当我使用指定的密码登录时,我无法登录,我不知道下一步该怎么办。我正在使用md5对密码进行哈希处理。
这是我在数据库中插入数据的代码:
<?php
$con = mysql_connect("localhost","abc123","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("database_db", $con);
$password= $_POST['password'];
$encrypt_password=md5($password);
$sql="INSERT INTO username (username, password)
VALUES
('$_POST[username]','$encrypt_password')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 data added";
mysql_close($con)
?>
您必须以与存储密码完全相同的方式重新散列输入的密码,才能对其进行验证。
示例:
if (md5($_POST['password']) === $stored_md5_password)
{
// Password is valid
}
MD5通常被认为是一种弱哈希算法,尤其是当SHA加密非常容易获得时。一些有趣的相关阅读:
- https://stackoverflow.com/questions/2768248/is-md5-really-that-bad
- 从无盐到有盐MD5密码
- SHA-1的密码存储安全吗
- http://www.php.net/manual/en/function.hash-hmac.php