Hash 安全支付网关coldfusion中的哈希

Hash 安全支付网关coldfusion中的哈希,hash,coldfusion,payment-gateway,Hash,Coldfusion,Payment Gateway,我正在尝试在coldfusion中为我们的安全支付网关创建一个哈希密码以接受交易 不幸的是,支付网关拒绝接受我生成的哈希 表单发送事务的所有元素,并根据五个不同的字段发送生成的哈希 在PHP中,它是-: <?php echo hash('sha256', ' test_site1234 GBP OrderTotal OrderID PASSWORD ');; ?> 我认为coldfusion中的代码应该是-,对吗 <cfset sitesecurity = Has

我正在尝试在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>

#网站安全#

代码应该按照它的方式运行,但在我看来,最好将要散列的值创建为一个大字符串。追加到字符串是“昂贵的”,因为每次添加到字符串时,都会创建一个新字符串,而旧字符串会被销毁。如果你每分钟处理一笔交易,你永远不会注意到有什么不同,但无论哪种方式,这都是很好的做法。我会用

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

我相信Miguel-F发布的链接会解决您的问题。Coldfusion的散列输出是全大写的,而我看到的大多数(所有?)其他输出都是小写的。根据网关处理大小写敏感度的方式,您应该尝试传递小写哈希

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


如果您试图匹配来自ColdFusion和PHP的哈希,请参阅本文-。谢谢!尝试了此操作,但在“OrderTotal###URL.ThisOrder”中找到的双哈希值导致无效的cfml错误。您可以发布错误吗?使用CF10是有效的CFML。我在我的回答中贴了一个有效的例子。马特,我的错误,它有效,我错过了一个引用。谢谢你!令人沮丧的是,尽管我们的安全支付网关仍然没有使用哈希值,但您可以输出创建的两个哈希值吗?PHP可能返回小写和ColdFusion大写。希望这是唯一的区别。您可以通过在ColdFusion HashThankyu Matt上使用
lcase()
进行修复,是的,小写输出确实出现了问题。我喜欢这个地方!哈哈!!!这是个小写问题,谢谢你,特拉维斯,偏爱米格尔夫和马特B
92A14E1D03833CB3FD6932A8E240861CDEC66E46723A544DFBC3C592D5EE7E66
<cfset sitesecurity = lCase(hash("test_site1234GBP"&OrderTotal&URL.ThisOrderID&"PASSWORD", "SHA-256"))>