0

我对此束手无策,只是找不到正确的代码组合来完成这项工作。我正在尝试为 API 查询创建身份验证摘要。我尝试了许多 CFML 函数(例如: Coldfusion HMAC-SHA1 加密HMAC SHA1 ColdFusion),但我没有得出与 API 文档中引用的相同结果。这是该示例(基本上是请求标头的元素,以换行符作为分隔符。):

application/xml\nTue, 30 Jun 2009 12:10:24 GMT\napi.summon.serialssolutions.com\n/2.0.0/search\ns.ff=ContentType,or,1,15&s.q=forest\n

这是关键:

ed2ee2e0-65c1-11de-8a39-0800200c9a66

根据文档,这应该导致:

3a4+j0Wrrx6LF8X4iwOLDetVOu4=

当 HMAC 哈希转换为 Base64 时。任何想法将不胜感激!

4

1 回答 1

4

问题是您的输入字符串,而不是函数。第一个工作正常。虽然我会将字符集更改为UTF-8,或将其作为参数。否则,结果取决于 jvm 默认值,这可能并不总是正确的,并且可以更改会破坏代码的值。

验证您是否正确构建了示例字符串。你用chr(10)的是新线吗?注意:它还必须以新行结尾。

代码:

<cfscript>
    headers = [ "application/xml"
                    , "Tue, 30 Jun 2009 12:10:24 GMT"
                    , "api.summon.serialssolutions.com"
                    , "/2.0.0/search"
                    , "s.ff=ContentType,or,1,15&s.q=forest"
                ];
    theText = arrayToList(headers, chr(10)) & chr(10);
    theKey = "ed2ee2e0-65c1-11de-8a39-0800200c9a66";
    theHash = binaryEncode( hmacEncrypt(theKey, theText), "base64");
    writeDump(theHash);
</cfscript>

结果:

3a4+j0Wrrx6LF8X4iwOLDetVOu4= 
于 2013-06-25T22:54:15.430 回答