【发布时间】:2012-06-05 00:46:50
【问题描述】:
我一直在尝试使用 mysql 数据库了解存储在用户表中的哈希和盐。我完成了存储它们,但似乎无法理解如何验证用户何时登录。
我已经浏览并看到了将盐和哈希分开和一起存储的方法。我生产的盐是随机的。
有什么想法吗?
我已经发布了我的代码。
<?php
$password = 'passwordwhatever';
//generate the salt
function gen_salt() {
$salt = uniqid(mt_rand(), true) . sha1(uniqid(mt_rand(), true));
$salt = crypt('sha512', $salt);
return $salt;
}
//generate the hash
function gen_hash($salt, $password) {
$hash = $salt . $password;
for($i = 0; $i < 100000; $i++) {
$hash = crypt('sha512', $hash);
}
$hash = $salt . $hash;
return $hash;
}
$password = gen_hash(gen_salt(), $password);
echo $password;
?>
【问题讨论】:
-
盐生成可以以一种不那么矫枉过正的方式完成;只需一个
uniqid(mt_rand(), true)就足够了,在上面添加一个sha512不会让它变得更随机 ;-)
标签: php password-hash