我正在使用SHA1加密密码。在我的原始代码中,我检查了密码字段是否为空:if (empty($newpassword) and (empty($newpassword 2))) { }
由于我现在使用 SHA1 并且当字段留空时它会自动生成 da39a3ee5e6b4b0d3255bfef95601890afd80709,因此如何重写代码?
将 da39a3ee5e6b4b0d3255bfef95601890afd80709 翻译回字符串?还是别的什么?
请帮忙。
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// oude password controle
if ($password == $qpassword)
$oudpassword_goed = 1;
// password controle
if ($newpassword == $newpassword2)
$newpassword_goed = 1;
if (empty($newpassword) and (empty($newpassword2)))
$newpassword_goed = 2;
// email controle
if ($email == $email2)
$email_goed = 1;
}
只需在散列之前检查输入即可。
另外,不要使用empty()
。这将告诉您用户输入了一个空密码,如果他们的密码0
(当然,您不允许只有一个字符的密码,对吧?
代码板。
您可以检查da39a3ee5e6b4b0d3255bfef95601890afd80709
以检查它是否为空。
更好的是在哈希之前检查空性。
检查密码字段是否为空,您可以做的是使用 strlen()
检查您实际发送的字符串的长度,因此如果字符串长于 0
,则它不为空,否则会显示错误,告诉他们他们的密码字段为空并且不要将其添加到数据库中。此外,没有办法将SHA1
转换回原始字符串,因为SHA1
是一种加密哈希算法,这会破坏其背后的目的。散列和加密之间的主要区别在于一个可以解密,另一个不能。然而,这并不意味着SHA1
哈希不能被暴力破解,它们确实很容易成为目标,而且MD5
,但这是在这个范围之外的另一个对话。
da39a3ee5e6b4b0d3255bfef95601890afd80709
的 SHA1 哈希是空字符串的众所周知的哈希。对照此值进行检查。