对于 Dovecot 的身份验证,我使用 SSHA256 哈希,但我不知道如何根据现有哈希验证给定密码。以下 PHP 函数(在 Web 中找到)用于创建 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