在coldfusion中哈希以获得安全的支付网关

时间:2013-03-19 13:19:26

标签: hash coldfusion payment-gateway

我正在尝试在coldfusion中为我们的安全支付网关创建一个哈希密码来接受交易。

不幸的是,支付网关拒绝接受我生成的哈希值。

表单通过事务的所有元素发送,并根据五个不同的字段发送生成的哈希值。

在PHP中它是 - :

<?php
echo hash('sha256', '
test_site1234
GBP
OrderTotal
OrderID
PASSWORD
');;
?>

我认为coldfusion中的代码应该是 - :

    <cfset sitesecurity = Hash("test_site1234"&"GBP"&#OrderTotal#&#URL.ThisOrderID#&"PASSWORD", "SHA-256")>

<cfoutput>#sitesecurity#</cfoutput>

2 个答案:

答案 0 :(得分:4)

我相信Miguel-F发布的链接可以解决您的问题。 Coldfusion的哈希输出是全部大写的,其中我见过的大多数(所有?)其他输出都是小写的。根据网关处理区分大小写的方式,您应该尝试传递小写哈希。

<cfset sitesecurity = lCase(hash("test_site1234GBP"&OrderTotal&URL.ThisOrderID&"PASSWORD", "SHA-256"))>  

答案 1 :(得分:1)

代码应该按照它的方式运行,但在我看来,创建哈希值作为一个大字符串更好。附加到字符串是“昂贵的”,因为每次添加到字符串时,都会创建一个新字符串并销毁旧字符串。如果你每分钟处理一次交易,你就不会发现任何差异,但无论如何都是好的做法。我会用。

 <cfset sitesecurity = Hash("test_site1234GBP#OrderTotal##URL.ThisOrderID#PASSWORD", "SHA-256")>

现在你可能在PHP中使用HASH来匹配ColdFusion中的HASH,但这是一个单独的问题。

样品

<cfset OrderTotal = 10>
<cfset url.ThisOrderID = 50>
<cfset sitesecurity = Hash("test_site1234GBP#OrderTotal##URL.ThisOrderID#PASSWORD", "SHA-256")>
<cfdump var="#sitesecurity#" abort>

返回

92A14E1D03833CB3FD6932A8E240861CDEC66E46723A544DFBC3C592D5EE7E66