На самом деле, вы можете использовать preg_match()
, чтобы убедиться, что это шестнадцатеричная строка из 40 символов как таковая:
function is_sha1($str) {
return (bool) preg_match('/^[0-9a-f]{40}$/i', $str);
}
Чтобы объяснить шаблон:
/ Opening Delimiter
^ Start Of String Anchor
[0-9a-f] Any of the following characters: 0123456789abcdef
{40} Repeated 40 times
$ End Of String Anchor
/ Closing Delimiter
i Modifier: Case-Insensitive Search
Если вы пытаетесь убедиться, что хеш sha1()
совпадает с паролем провайдера пользователя, вы просто перепишите его так:
if($db_hash == sha1($user_provided_pass))
echo "Password is correct!";