5

我正在使用 SHA1 加密密码。在我的原始代码中,我检查了密码字段是否为空: if (empty($newpassword) and (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;
    }
4

4 回答 4

8

在散列之前检查输入。

另外,不要使用empty(). 这将告诉您用户输入了一个密码,如果他们的密码是0(当然,您不允许只有一个字符的密码,对吗?)

键盘

于 2012-10-16T11:40:15.853 回答
2

可以检查da39a3ee5e6b4b0d3255bfef95601890afd80709它是否为空。

更好的是在散列之前检查空虚。

于 2012-10-16T11:40:27.490 回答
1

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

于 2012-10-16T11:41:12.377 回答
1

检查密码字段是否不为空的方法是strlen()检查您实际发送的字符串的长度,因此如果字符串长于0,则它不为空,否则显示错误,告诉他们他们的密码字段为空,不要将其添加到数据库中。此外,由于是加密哈希算法,因此无法转换SHA1回原始字符串SHA1,这会破坏其背后的目的。散列和加密之间的主要区别在于一个可以解密而另一个不能。然而,这并不意味着SHA1散列不能被暴力破解,它们确实是简单的目标,以及MD5,但这是此范围之外的另一个对话。

于 2012-10-16T11:44:42.783 回答