1

我正在编写一个脚本来散列用于与安全 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哈希生成上面的示例字符串时,它变成了这个

7871D5C9A366339DA848FC64CB32F6A9AD8FCAD

4

1 回答 1

2

01a1edbb159aa01b99740508d79620251c2f871d

抱歉,鉴于 php、CF 和 java 都另有说明,我看不出示例字符串如何产生该结果。我怀疑文档中有错误。突出的一件事是使用“txnpassword”而不是示例值,就像其他字段一样。也许他们使用不同的值来生成字符串并忘记将其插入实际示例中?

更新:

第 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
于 2013-07-11T22:04:40.200 回答