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函数的单独参数
见参考资料:
如用户所述,CFHMac
函数以大写形式返回哈希,而PHPhash_mac
函数以小写形式返回哈希。为了能够将2作为字符串进行比较,将CFHMac
转换为小写,方法是将其包装在LCase
函数中。我错过了第一行也在使用php codeWell的hash_HMac
,php代码正在使用hash_HMac
,这需要一个共享键来生成哈希,如代码所示。您的CF代码仅使用普通哈希函数。您不能像这样简单地将param和secret连接起来。它不会产生与php代码相同的哈希值。您需要使用CF的hmac
函数,并以与php代码相同的方式使用它,将其作为hmac函数的单独参数保密。那么,在coldfusion中找不到hmac函数如何呢?我不是coldfusion专家,但这不起作用:这个函数存在,刚才我才知道,谢谢大家