在php中转换为md5是错误的


convert to md5 is wrong in php

我有一个表单,其中我从用户获取用户名和密码,我正在将密码转换为md5。然后将其插入数据库。在用户登录表单中,我获取密码并将其转换为md5。然后比较两个密码。它在某些条件下匹配,但如果password = p@$$w0rd则失败。问题是什么?这个问题的解决方案是什么?

从我的表单到p@$$w0rd的数据库密码到md5是b7463760284fd06773ac2a48e29b0acf,从登录表单是e22bb24ca616331cb92a48b712034bc3

注册表中的代码

$password = trim($_POST['password']);   
$dpassword = md5($password);

和从登录表单$passwd = md5($password);

$sql = mysql_query("select * from create_dealer where (dealer_email='$user' && password='$passwd')");

问题出在引号。

echo md5('p@$$w0rd');// echoes b7463760284fd06773ac2a48e29b0acf
echo md5("p@$$w0rd");// echoes e22bb24ca616331cb92a48b712034bc3

当您使用双引号时,$w0rd被视为未定义变量,并被替换为空字符串。

echo md5("p@$");// echoes e22bb24ca616331cb92a48b712034bc3

如果您使用相同的方法对两个输入进行散列,那么很可能在其中一个输入中得到一些空白或转义的字符,请确保输入完全相同。

你也可以只是删除md5调用测试,看看是否纯文本密码匹配,我打赌不是。这可能只是你的SQL返回错误的行…