我在这方面已经结束了,我只是找不到合适的代码组合来完成这项工作。我正在尝试为API查询创建身份验证摘要。我尝试了很多CFML函数(例如:Coldfusion HMAC-SHA1 encryption和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时。任何想法将非常感谢!
答案 0 :(得分:4)
问题是输入字符串,而不是函数。 first one工作正常。虽然我会将charset更改为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=