当我通过清除密码来检查用户的登录名,并在字符串上应用md5()时,md5散列等于存储在MySQL数据库中的md5散列(登录成功) 。相同的密码,但不同的md5散列
但我不想在我的POST函数中清楚地传递用户密码,所以我决定使用cryptoJS只发送密钥,然后解密PHP服务器端的密码。
问题是,当我使用解密的密码时,md5是不同的。这很奇怪,因为清除密码字符串与解密密码相同,并且md5散列值不同。
这样做:
var_dump($clearPassword); //Hello.
var_dump($decryptedPassword); //Hello.
但是:
var_dump(md5($clearPassword)); //3ea484671d7b00a1df4734ded1aa379c1.
var_dump(md5($decryptedPassword)); //470a1ad08cbdebe075214591ea20fec9.
正如你所看到的,这是完全一样的字符串,但MD5哈希不同的是,我注意到的var_dump()给作为输出:
string(16) for the $clearPassword;
string(32) for the $decryptPassword;
我试图改变字符串编码,但没有运气。任何人都可以解释为什么md5()的行为就像那些相同的密码字符串一样?再次感谢。
是不是你在这里丢失'$'符号var_dump(md5(decryptedPassword))' – fpierrat
你只是发送密钥然后解密PHP服务器端的密码,什么关键?你使用什么加密? (MD5不加密...) –
@fpierrat对不起,是一个错字错误,我在我的文章中修改了它,与$无关。 –