我打算将密码存储为sha1,所以我需要一种方法来验证它在我网站的另一个点是sha1.我打算使用preg_match,但我不知道如何制作正则表达式模式.有人可以帮助我吗?
谢谢
编辑:我不是要看两个哈希是否匹配.
And*_*ore 46
实际上,您可以使用preg_match()它来确保它是一个40个字符的十六进制字符串:
function is_sha1($str) {
return (bool) preg_match('/^[0-9a-f]{40}$/i', $str);
}
Run Code Online (Sandbox Code Playgroud)
解释模式:
/ 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!";
Run Code Online (Sandbox Code Playgroud)