MD5 PHP效果不好

时间:2014-01-24 20:15:01

标签: php

我尝试为在线支付处理生成哈希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不同?

1 个答案:

答案 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';