【问题标题】:Using MD5() in SELECT Query does not return results在 SELECT Query 中使用 MD5() 不会返回结果
【发布时间】:2017-11-15 13:26:27
【问题描述】:

我在我的 Laravel PHP 应用程序中有这个查询,但是,我发现这个问题主要与 MySQL 相关,而不是 Laravel 或 PHP。这是查询:

SELECT id FROM users WHERE MD5('email')='9e1af6d8046e217984ea76bf489a64eb' AND password_md5='f3617237ac21562663a40608a85ea38d';

我只获得了电子邮件的 md5 哈希以及密码(也是 md5 哈希),并且需要从 MySQL 数据库中检索用户的 id。数据库中的emailnot 散列的,这就是为什么我发现我需要在声明期间MD5() 它。但是,上面的查询在应该返回一个结果时却没有返回任何结果。 是的,我确保正确输入了哈希

我在尝试解决此问题时发现SELECT MD5('users.email') 不会返回与实际电子邮件地址相同的 MD5 哈希值。我想知道我是否在滥用 MD5() 函数,或者 MySQL 是否向其中添加了任何内容,因此哈希值与我的 PHP 计算的哈希值不同。

【问题讨论】:

  • 如果是列标识符,去掉email周围的引号
  • 哇。就是这个。请将此作为答案发布,以便我打勾。
  • 出于好奇,密码是“klavier”吗:-?
  • @ÁlvaroGonzález 是的,我知道这需要更加安全。 :-)
  • @RaymondNijland 不,使用 md5 完全没问题。只是不是为了散列密码。只需将算法用于其预期用途即可。

标签: mysql md5


【解决方案1】:

如果email 是列标识符,请删除它的引号。您只需要对字符串文字使用引号。

 SELECT id FROM users WHERE MD5(email)='9e1af6d8046e217984ea76bf489a64eb' AND password_md5='f3617237ac21562663a40608a85ea38d';

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多