2

私たちの安全な支払いゲートウェイがトランザクションを受け入れるために、coldfusion でハッシュ パスワードを作成しようとしています。

残念ながら、支払いゲートウェイは生成されたハッシュの受け入れを拒否しています。

フォームは、トランザクションのすべての要素を送信し、5 つの異なるフィールドに基づいて生成されたハッシュを送信します。

PHP では次のようになります。

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

コールドフュージョンのコードは次のようになるべきだと考えるのは正しいですか -:

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

<cfoutput>#sitesecurity#</cfoutput>
4

2 に答える 2

4

Miguel-F が投稿したリンクで問題が解決すると思います。Coldfusion のハッシュ出力はすべて大文字ですが、私が見たほとんどの (すべて?) 他の出力は小文字です。ゲートウェイが大文字と小文字を区別する方法に応じて、小文字のハッシュを渡すようにしてください。

<cfset sitesecurity = lCase(hash("test_site1234GBP"&OrderTotal&URL.ThisOrderID&"PASSWORD", "SHA-256"))>  
于 2013-03-19T13:38:39.957 に答える
1

コードはそのまま機能するはずですが、私の意見では、ハッシュする値を 1 つの大きな文字列として作成する方がよいでしょう。文字列に追加するたびに新しい文字列が作成され、古い文字列が破棄されるため、文字列への追加は「コストがかかります」。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
于 2013-03-19T13:24:14.877 に答える