Для аутентификации с помощью Dovecot я использую хэши SSHA256, но я не знаю, как проверить данный пароль на существующий хеш. Следующие функции PHP (нашли их в Интернете) используются для создания хэша SSHA256:Проверка пароля на хэш SSHA256 в PHP
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, который делает все это для вас. – SLaks