我尝试为在线支付处理生成哈希MD5
,并且我的哈希值无效。
我发现MD5
函数会产生不同的结果,但我不知道为什么。
这是我的代码部分:
$tmp="330012345211.0024-01-2014:13:07:47:357newsecret";
$ab= md5($tmp);
$terminalid=33001;
$orderid=23452;
$amount=11.00;
$datetime=0024-01-2014:13:07:47:357;
$secret=newsecret;
$tmp1="$terminalid"."$orderid"."$amount"."$datetime"."$secret";
$aa=md5($tmp1);
为什么$aa
的结果与$ab
不同?
答案 0 :(得分:3)
$secret=newsecret;
在$ab
中,newsecret
是一个字符串。
在$aa
中,newsecret
被用作常量,因为它没有用引号括起来。我认为你没有将它定义为常量,所以添加引号。
$secret='newsecret';
实际上,你的所有字符串都没有用引号括起来。
$terminalid='33001';
$orderid='23452';
$amount='11.00';
$datetime='0024-01-2014:13:07:47:357';
$secret='newsecret';
(我也将这些数字括在引号中,因为ID /数字可以以0
开头或以.0
结尾,当数字隐含地强制转换为数字时,可能会删除字符串)。
我注意到的另一件事:您可能在$datetime
的开头错误地复制了“00”。否则在$aa
中,您将获得“...... 11.000024 ...”而不是“{11.0024 ......”,如$ab
中所示。应该是:
$datetime='24-01-2014:13:07:47:357';