我正在编写一个脚本来散列“指纹”,以便与安全的Pay Direct Post API进行通信。
我遇到的问题是我试图创建一个与提供的示例代码相匹配的SHA-1字符串,这样我就可以确保准确地发布内容。
示例Sha-1字符串显示为
编码01a1edbb159aa01b99740508d79620251c2f871d
但转换时我的字符串显示为
7871D5C9A366339DA848FC64CB32F6A9AD8FCADD
完全不同......
我的代码如下..
<cfset variables.finger_print = "ABC0010|txnpassword|0|Test Reference|1.00|20110616221931">
<cfset variables.finger_print = hash(variables.finger_print,'SHA-1')>
<cfoutput>
#variables.finger_print#
</cfoutput>
我使用Coldfusion 8来做到这一点
它生成一个40个字符的哈希值,但我可以看到它生成完全不同的字符串。
希望之前有人这样做过,并且可以指出我正确的方向......
提前致谢
**编辑
创建哈希的文章仅包含以下信息。
示例:设置指纹与|连接的字段分隔符:
ABC0010 | txnpassword | 0 |测试参考| 1.00 | 20110616221931
SHA1上面的字符串:01a1edbb159aa01b99740508d79620251c2f871d
使用coldfusion hash生成上面的示例字符串时,会将其转换为此
7871D5C9A366339DA848FC64CB32F6A9AD8FCADD
答案 0 :(得分:2)
01a1edbb159aa01b99740508d79620251c2f871d
很抱歉,但是我没有看到示例字符串如何产生该结果,因为php,CF和java都说不然。我怀疑文档中有错误。突出的一点是使用&#34; txnpassword&#34;而不是像其他字段一样的样本值。也许他们使用不同的值来生成字符串并忘记将其插入实际示例中?
<强>更新强>
第27页的示例5.2.1.12更有意义。忽略大小写,ColdFusion的结果完全匹配。我注意到描述中还提到了summarycode
值的某些内容,而3.3.6节中的示例中没有这个值。所以这倾向于支持前面例子中的文档错误理论。
<强>代码:强>
<cfset input = "ABC0010|mytxnpasswd|MyReference|1000|201105231545|1">
<cfoutput>#hash(input, "sha-1")#</cfoutput>
<强>结果:强>
3F97240C9607E86F87C405AF340608828D331E10