Php 将值散列到api

Php 将值散列到api,php,coldfusion,lucee,Php,Coldfusion,Lucee,我有这个密码 $params = $version.$merchant_id.$payment_description.$order_id.$currency.$amount.$result_url_1; $hash_value = hash_hmac('sha256',$params, $secret_key,false); 转换为CF as param = version & merchant_id & payment_description &

我有这个密码

  $params = $version.$merchant_id.$payment_description.$order_id.$currency.$amount.$result_url_1;
    $hash_value = hash_hmac('sha256',$params, $secret_key,false);
转换为CF as

     param = version & merchant_id & payment_description & order_id & currency & amount & result_url_1,"SHA-256")>
hash_value = lcase(hash(param & secret_key,"SHA-256')>
但是数据是不同的,我是否遗漏了任何东西,php代码(第一个代码片段)正在使用
hash\u hmac
,这需要一个共享键来生成哈希,如代码所示。您的CF代码(第二个代码段)仅使用普通的
哈希函数

您不能像这样简单地将param和secret连接起来。它不会产生与php代码相同的哈希值。您需要使用CF的
HMac
函数,并以与php代码相同的方式使用它,将机密作为HMac函数的单独参数

见参考资料:


如用户所述,CF
HMac
函数以大写形式返回哈希,而PHP
hash_mac
函数以小写形式返回哈希。为了能够将2作为字符串进行比较,将CF
HMac
转换为小写,方法是将其包装在
LCase
函数中。

我错过了第一行也在使用php codeWell的
hash_HMac
,php代码正在使用
hash_HMac
,这需要一个共享键来生成哈希,如代码所示。您的CF代码仅使用普通哈希函数。您不能像这样简单地将param和secret连接起来。它不会产生与php代码相同的哈希值。您需要使用CF的
hmac
函数,并以与php代码相同的方式使用它,将其作为hmac函数的单独参数保密。那么,在coldfusion中找不到hmac函数如何呢?我不是coldfusion专家,但这不起作用:这个函数存在,刚才我才知道,谢谢大家