【发布时间】:2011-03-03 13:40:56
【问题描述】:
好的,所以我尝试通过在用户注册时输入密码时添加" . sha1($_POST['password']) . " 来使用户信息超级安全。效果很好,查看数据库,我不知道他们的密码是什么。
现在问题是登录。我正在运行一些测试,当我尝试登录时,密码 12345 与使用 $password=sha1($_POST['mypassword']); 加密的密码不匹配
知道为什么吗?
【问题讨论】:
-
您是说您正在对密码进行哈希处理,将其存储在数据库中,然后稍后再次对其进行哈希处理并得到不同的结果?你做错了什么(
sha1总是为给定的输入返回相同的输出),但我们没有足够的信息来知道是什么 -
你的数据库中的哈希是
8cb2237d0679ca88db6464eac60da96345513964吗? -
sha1('12345') 将始终等于 sha1('12345')。您存储的 $_POST['mypassword'] 的值是否有任何错误?
-
另外,您的设计很容易受到攻击。黑客仍然可以通过对一些常见密码运行 sha1() 并将它们与这些字符串进行比较来猜测人们的密码。要解决此问题,您需要添加“盐”。在 Google 上搜索“salt cryptography”以了解更多信息。
-
也许还可以在哈希中添加一些盐@dmazzoni,你更快:-)