2013-06-25 28 views
0

我在我的智慧結束這一個,我只是無法找到正確的代碼組合來使此工作。我正在嘗試爲API查詢創建一個驗證摘要。我已經嘗試了許多CFML函數(例如:Coldfusion HMAC-SHA1 encryptionHMAC SHA1 ColdFusion),但我沒有提出與API文檔中引用的結果相同的結果。下面是一個例子(與換行作爲分隔符的請求報頭的基本元素。):嘗試使用ColdFusion爲API身份驗證創建HMAC-SHA1哈希

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時。任何想法將不勝感激!

+1

是API公開?如果是這樣,那是什麼?它是否帶有Java或PHP中的任何示例代碼?我通常會從那些開始。 – Henry

回答

4

問題是你的輸入字符串,而不是函數。 first one工作正常。儘管我會將字符集更改爲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= 
相關問題