【问题标题】:md5 encryption qwerty - azerty errormd5 加密 qwerty - azerty 错误
【发布时间】:2011-09-16 13:40:33
【问题描述】:

对于我的 php-login 系统与 MySQL 数据库相结合,我使用 md5 - 加密在用户注册自己时转换密码。在 Windows 主机上一切正常, 但现在我已将主机更改为 Linux。 现在,当我使用密码“azerty”注册示例用户时,我无法登录...... 当我尝试使用“qwerty”作为密码登录时,它可以工作。 所以这就像 md5 函数将我的键盘读取为 qwerty 键盘而不是 azerty...

我能做些什么来解决这个问题?

编辑:

在注册脚本中我这样做:

$password = md5($password);

然后将$password 保存到我的数据库中。

登录脚本对此进行检查:

if ($username == $dbusername && md5($password) == $dbpassword)

【问题讨论】:

  • 这是一个假设问题吗?没有 MD5 加密之类的东西。
  • 请显示一些示例调试输出。密码字段在您 MD5 之前实际上包含什么?同时显示一些代码
  • 您确定您没有正确输入密码吗? QA 非常接近。
  • 请显示一些示例调试输出。密码字段在 MD5 之前实际上包含什么?
  • “q”是“q”,“a”是“a”,无论它出现在键盘的哪​​个位置。重新排列我的按键以将我的键盘变成 dvorak 布局并不会因为我移动了塑料盖而使我的所有密码失效。

标签: php md5


【解决方案1】:

您切换主机并不重要。如果您可以使用“querty”登录,那么您一定是在不经意间注册使用“querty”

当您测试系统时,请使用普通的<input type="text">,以便您查看您正在输入的内容。完成测试后切换<input type="password">。另外,添加一个“验证密码”字段,这样您就可以验证用户没有意外输入她的密码。

安全密码存储入门

在您的用户表中添加一个名为“salt”的字段

在注册脚本中这样做:

$salt = time();
$code = hash('sha256', $password . $salt);

$code$salt 保存在用户表中。

在登录脚本中检查:

if ($username === $dbusername && hash('sha256', $password . $dbsalt) === $dbpassword)

【讨论】:

  • @John:谢谢。最近很多人都经常遇到这种情况。
猜你喜欢
  • 2013-01-23
  • 2018-01-19
  • 2020-07-29
  • 2013-10-26
  • 2015-02-08
  • 2018-03-28
  • 2019-03-30
  • 2011-05-24
  • 1970-01-01
相关资源
最近更新 更多