0

以下是将用户密码存储在数据库中的安全方法吗?

注册时:

$salt=hash("sha512", rand());
$password=hash("sha512", $_POST["password"].$salt);

insert_values_into_db;

登录时:

$given_password=$_POST["password"];

$salt=get_salt_from_db;
$correct_password=get_password_from_db;

if(hash("sha512", $given_password.$salt) === $correct_password){
    //Password is correct
}else{
    //Password is incorrect
}

这有什么明显的错误吗?

4

3 回答 3

1

最佳解决方案:如果您有 PHP 5.5 或更高版本,请使用password_hash函数。如果没有,请查看 ircmaxwell 的password_compat库。

于 2013-11-06T20:44:57.620 回答
0

所有这些哈希都针对速度进行了优化,并且在处理器上变得容易。(MD5、SHA512 等)因此破解它们同样容易。我要么重新散列几次,要么只使用以下crypt方法: http: //php.net/manual/en/function.crypt.php

阅读 PHP 文档中有关密码哈希的更多信息:http: //php.net/manual/en/faq.passwords.php

于 2013-11-06T20:44:03.350 回答
-1

在人们使用的数据库中存储密码的最常见方法是

md5密码如下:md5($password)

或者

crypt($password)

您还可以添加双 md5 或双密码以确保密码真正安全

于 2013-11-06T20:45:24.453 回答