【发布时间】:2013-08-26 21:24:11
【问题描述】:
crackstation.net 上写着:
验证密码
- 从数据库中检索用户的盐和哈希。
- 将盐添加到给定密码并使用相同的哈希函数对其进行哈希处理。
- 将给定密码的哈希值与数据库中的哈希值进行比较。如果它们匹配,则密码正确。否则,
密码不正确。
但是在页面底部列出的source code 中,我无法弄清楚validate_password 函数是如何考虑盐分的。我的意思是给定密码前面的盐在哪里?
这里是有问题的函数:
function validate_password($password, $correct_hash)
{
$params = explode(":", $correct_hash);
if(count($params) < HASH_SECTIONS)
return false;
$pbkdf2 = base64_decode($params[HASH_PBKDF2_INDEX]);
return slow_equals(
$pbkdf2,
pbkdf2(
$params[HASH_ALGORITHM_INDEX],
$password,
$params[HASH_SALT_INDEX],
(int)$params[HASH_ITERATION_INDEX],
strlen($pbkdf2),
true
)
);
}
【问题讨论】:
-
如果您不完全了解用户安全的身份验证/盐/哈希,您应该外包给外部类来为您处理所有这些。我有时使用的一个:github.com/ircmaxell/password_compat 或我创建并证明是稳定的简单版本:github.com/DarylJG/Authentication
-
@DarylGill 当你说稳定时。这是什么意思?
-
@PeeHaa 可能是用词错误。更合适的会是可靠的
-
问题是:它安全吗? IE。它是否经过了知道如何判断的人的审查?
标签: php security salt password-hash