php salt我的密码每个用户sha512 - 我这样做对吗?

时间:2011-06-25 17:06:15

标签: php salt sha512 password-storage

我正在尝试为我的密码正确执行每用户和站点范围的盐。这就是我所拥有的:

require('../../salt.php'); //this is above the web root and provides $salt variable
$pw = mysql_real_escape_string($_POST['pw']);
$per_user_salt = uniqid(mt_rand());
$site_salt = $salt //from salt.php that was required on first line
$combine = $pw . $per_user_salt . $site_salt;
$pw_to_put_in_db = hash("sha512", $combine);

这是对的吗?感谢

4 个答案:

答案 0 :(得分:0)

人们经常使用与密码连接的唯一salt,然后使用hmac方法添加全站点哈希密钥:

http://www.php.net/manual/en/function.hash-hmac.php

$password = hash_hmac('sha512', $password . $salt, $sitewide_key);

答案 1 :(得分:0)

这很好,刚从“sha512”删除“”:)

$pw = $_POST['pw'];
$per_user_salt = uniqid(mt_rand());
$site_salt = $salt //from salt.php that was required on first line
$combine = $pw . $per_user_salt . $site_salt;
$pw_to_put_in_db = hash(sha512, $combine);

不必使用md5 sha512足够安全吗

答案 2 :(得分:0)

使用crypt,它以所有语言提供,您的密码哈希也可以被其他程序使用:

$hash = crypt("secret", "$6$randomsalt$");

答案 3 :(得分:-2)

根据评论,我将要做的是: 将我的$combine更改为每个用户唯一但未存储在db中的内容。所以类似:$combine = $pw . md5($pw) . 'PoniesAreMagical' . $site_salt . md5($pw);等等......感谢您的帮助...

所以 - 对于那些试图弄清楚如何第一次这样做的人(像我一样)......所有关于算法的东西......做一些模糊,独特,难以理解的东西;因为如果有人想要进入你的系统,他们将不得不解决这个问题。感谢所有人提供的精彩评论。