使用SHA1时如何检查PHP字段是否为空

使用SHA1时如何检查PHP字段是否为空,php,encryption,sql-update,sha1,Php,Encryption,Sql Update,Sha1,我正在使用SHA1加密密码。在我的原始代码中,我用以下命令检查密码字段是否为空:if(empty($newpassword)和(empty($newpassword2)){} 由于我现在使用SHA1,当字段留空时,它会自动生成da39a3ee5e6b4b0d3255bfef95601890afd80709,因此如何重新编写代码 将da39a3ee5e6b4b0d3255bfef95601890afd80709翻译回字符串?还是别的什么 请帮忙 if ($_SERVER['REQUEST_

我正在使用SHA1加密密码。在我的原始代码中,我用以下命令检查密码字段是否为空:if(empty($newpassword)和(empty($newpassword2)){}

由于我现在使用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
以检查它是否为空


不过最好是在散列之前检查空值。

da39a3ee5e6b4b0d3255bfef95601890afd80709的SHA1散列是众所周知的空字符串散列。对照此值进行检查。

要检查密码字段是否为空,可以使用strlen()检查实际发送的字符串的长度,因此如果字符串长度大于0,则该字符串不为空,否则会显示错误,告诉他们密码字段为空,不要将其添加到数据库中。此外,由于SHA1使用单向加密方法,因此无法将SHA1转换或转换回原始字符串。

如果有人的合法密码也散列到该字符串,该怎么办?;)检查哈希可能是个坏主意。1) 很有可能另一个真实密码会与此哈希冲突。2) 如果你改变了你的散列算法或salt,你必须记住你硬编码了这个值,然后回去改变它。它不会。SHA1冲突极为罕见。此外,然后返回第一个选项:哈希前检查。我无法想象使用一个意外地与空字符串具有相同哈希值的密码是一个好主意。@alex:该字符串是空字符串的sha1结果。有趣。听起来好像有人忘了用盐:-D可能是问这个问题的人吗?:-D
$pass='somestring'$salt='}#f4ga~g%7hjg4N'$散列=sha1($salt.$pass)也可以<代码>0
实际上并不是密码;-)。不建议将SHA1用于密码,而非盐哈希几乎是自找麻烦。请尝试PBKDF2: