正在尝试使用ColdFusion为API身份验证创建HMAC-SHA1哈希



我对此束手无策,只是找不到合适的代码组合来实现这一点。我正在尝试为API查询创建一个身份验证摘要。我尝试过许多CFML函数(例如:Coldfusion HMAC-SHA1加密和HMAC SHA1 Coldfusion),但我没有得到API文档中引用的相同结果。这是一个例子(基本上是请求头的元素,用换行符作为分隔符。):

application/xmlnTue, 30 Jun 2009 12:10:24 GMTnapi.summon.serialssolutions.comn/2.0.0/searchns.ff=ContentType,or,1,15&s.q=forestn

关键是:

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

根据文件应导致:

3a4+j0Wrrx6LF8X4iwOLDetVOu4=

当HMAC散列被转换为Base64时。任何想法都将不胜感激!

问题是您的输入字符串,而不是函数。第一个很好用。尽管我会将字符集更改为UTF-8,或者将其作为一个参数。否则,结果取决于jvm默认值,而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= 

最新更新