MySQL MD5 SELECT

时间:2011-01-30 18:37:33

标签: mysql md5

以下查询返回null。

SELECT `email`, `password`, `salt` FROM `users` WHERE `password` = md5(`salt`+md5('123123'+`salt`)+'123123') AND `email` = 'xeka@xeka.ru'

以下查询返回'd2b4312db21705dafd96df14f8525fef',但为什么?

SELECT md5( 'Vwm' + md5( '123123' + 'Vwm' ) + '123123' )  

此代码返回'422ad0c19a38ea88f4db5e1fecaaa920'。

$salt = 'Vwm';
$password = '123123';

echo md5($salt . md5($password . $salt) . $password);

进行用户授权。如何创建一个查询到数据库,以便第一次使用SALT和SALT这样我做了一些MD5功能?

3 个答案:

答案 0 :(得分:32)

SELECT md5(CONCAT('Vwm', md5(CONCAT('123123', 'Vwm' )), '123123' )) ;

你需要连接()字符串然后对它们执行md5()。

这样它可以正确返回与PHP脚本相同的值:

+--------------------------------------------------------------+
| md5(CONCAT('Vwm', md5(CONCAT('123123', 'Vwm' )), '123123' )) |
+--------------------------------------------------------------+
| 422ad0c19a38ea88f4db5e1fecaaa920                             |
+--------------------------------------------------------------+

答案 1 :(得分:11)

MySQL中的字符串连接需要使用CONCAT()`。这;

md5( '123123' + 'Vwm' )

实际上是在字符串中添加一个数字:

mysql> select '12123' + 'Vwm';
+-----------------+
| '12123' + 'Vwm' |
+-----------------+
|           12123 |
+-----------------+

因此,您的查询与PHP端不同,因为您没有散列相同的字符串。

答案 2 :(得分:2)

  • salt应该在你的脚本中
  • 数据库中的盐渍密码
  • 您的脚本正在使用密码并与db
  • 中的salted版本进行比较
  • 如果同样考虑好的话