【发布时间】:2013-02-02 01:22:28
【问题描述】:
为了使用 Dovecot 进行身份验证,我使用 SSHA256 哈希,但我不知道如何根据现有哈希验证给定密码。以下 PHP 函数(在网上找到)用于创建 SSHA256 哈希:
function ssha256($pw) {
$salt = make_salt();
return "{SSHA256}" . base64_encode( hash('sha256', $pw . $salt, true ) . $salt );
}
function make_salt() {
$len = 4;
$bytes = array();
for ($i = 0; $i < $len; $i++ ) {
$bytes[] = rand(1,255);
}
$salt_str = '';
foreach ($bytes as $b) {
$salt_str .= pack('C', $b);
}
return $salt_str;
}
示例输出:{SSHA256}lGq49JTKmBC49AUrk7wLyQVmeZ7cGl/V13A9QbY4RVKchckL
我是否必须提取盐,但如何提取? 我完全迷失了解决问题的方法,有人提示吗?
感谢大家的帮助!
抱歉,我必须使用 SSHA256,因为 Dovecot 1.2.15 仅支持以下方案:
CRYPT MD5 MD5-CRYPT SHA SHA1 SHA256 SMD5 SSHA SSHA256 PLAIN CLEARTEXT CRAM-MD5 HMAC-MD5 DIGEST-MD5 PLAIN-MD4 PLAIN-MD5 LDAP-MD5 LANMAN NTLM OTP SKEY RPA
【问题讨论】:
-
您应该使用加密安全的盐和迭代哈希。更好的是,只需使用 bcrypt,它会为您完成所有这些工作。
标签: php validation passwords salt