尝试登录已注册的SHA1密码

时间:2014-12-22 03:40:13

标签: php mysql mysqli

我最近已经注册并使用php登录我的网站,但它有一个我无法处理的问题。 每当我尝试使用任何模式保护我的通行证时,它只是说登录不正确。

这里是我用于密码的代码部分

注册:

if (empty($_POST['password'])) {
$error[] = 'Please Enter Your Password ';
} else {
$password = $_POST['password'];
}
...
$password2 = SHA1($password);
$query = "INSERT INTO member( username, email, password, hwid) VALUES ( '$username', '$email', '$password2', '$hwid')";

然后,在登录时:

$pass = addslashes(SHA1($_GET['password']));
...
$passwort = $row->password;
$id = $row->hwid;
if ($passwort == $pass && $id == $hwid)

那么,登录失败后我做错了什么? 当我不使用哈希时,它运作良好..

2 个答案:

答案 0 :(得分:2)

如果您的登录表单方法是POST而不是GET,那将产生差异并需要包含命名属性。 这只是一个见解。

另外,检查您的列是否为VARCHAR并且足够长以容纳散列。

  • 很多时候,这就是问题,而且我经常看到这种情况发生。

我还建议您使用CRYPT_BLOWFISH或PHP 5.5的password_hash()功能。

对于PHP< 5.5使用password_hash() compatibility pack

SHA1不是最好的散列方法,并且使用固定散列(使其更容易破解)而不是像password_hash()这样的随机散列。

答案 1 :(得分:0)

在注册时,请尝试更改

$password2 = SHA1($password);

到此:

$password2 = SHA1(add_slashes($password));