【发布时间】: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。数据库中的email 是not 散列的,这就是为什么我发现我需要在声明期间MD5() 它。但是,上面的查询在应该返回一个结果时却没有返回任何结果。 是的,我确保正确输入了哈希。
我在尝试解决此问题时发现SELECT MD5('users.email') 不会返回与实际电子邮件地址相同的 MD5 哈希值。我想知道我是否在滥用 MD5() 函数,或者 MySQL 是否向其中添加了任何内容,因此哈希值与我的 PHP 计算的哈希值不同。
【问题讨论】:
-
如果是列标识符,去掉
email周围的引号 -
哇。就是这个。请将此作为答案发布,以便我打勾。
-
出于好奇,密码是“klavier”吗:-?
-
@ÁlvaroGonzález 是的,我知道这需要更加安全。 :-)
-
@RaymondNijland 不,使用 md5 完全没问题。只是不是为了散列密码。只需将算法用于其预期用途即可。