【发布时间】:2012-08-16 22:59:09
【问题描述】:
目前我使用 php5 对我的密码进行哈希处理。我想知道如何更改 SHA512 的随机盐。在我将以下代码从 sha1 更改为 sha 512 后,我的哈希失败。 下面是我的密码散列代码:
public function hashSSHA($password) {
$salt = mhash(rand());
$salt = substr($salt, 0, 15);
$encrypted = base64_encode(bin2hex(mhash(MHASH_SHA512, $password . $salt, true) . $salt));
$hash = array("salt" => $salt, "encrypted" => $encrypted);
return $hash;
}
/**
* Decrypting password
* @param salt, password
* returns hash string
*/
public function checkhashSSHA($salt, $password) {
$hash = base64_encode(bin2hex(mhash(MHASH_SHA512, $password . $salt, true) . $salt));
return $hash;
}
我设法注册了一个新用户,但是当我尝试使用注册用户登录时,它会告诉我我的用户名或密码在哪里。所以我想知道我在哪里做错了。谢谢!
【问题讨论】:
-
不要使用 SHA 哈希密码;太快了。
-
我同意@SLaks。阅读这篇非常有趣的帖子:stackoverflow.com/questions/4795385/…。如果你不改变对 sha521 的看法,你仍然可以使用
BCrypt的getRandomBytes($count)方法。 -
如果我使用 BCrypt 那么我如何将它集成到我的代码中?我是加密新手。
-
@JonesCh 见stackoverflow.com/questions/4795385/…
-
@user1477388:太快意味着攻击者每秒可以尝试许多个密码。