簡體   English   中英

計算HMAC-SHA簽名

[英]Computing an HMAC-SHA signature

我正在為亞馬遜的SimpleDB編寫一個模塊。 它們要求使用HMAC-SHA算法對REST請求進行簽名。 詳情請點擊這里。

我被告知有一個計算機這個簽名的功能,但我在文檔中找不到它。 調用的函數是什么,它的參數是什么樣的?

HMAC是一種標准功能,可以在大多數平台的加密庫中找到。 亞馬遜在您鏈接到的文檔頁面上顯示了幾個示例。

對於Java,您可以在javax.crypto.Mac中找到它

對於.Net,請查看System.Security.Cryptography

對於KRL ,我還沒有找到任何內置的庫存解決方案。 由於似乎可以嵌入javascript, jsSHA實現可能很有用。 數學庫中有一個sha1函數,根據RFC2104實現HMAC似乎並不困難。

編輯:以下應該工作:

pre {
  message = "Four score and seven years ago";
  key = "Abe Lincoln";
  signature = math:hmac_sha256_base64(message, key);
}
notify("Signature is", signature);

函數是math:hmac_sha256_base64(<datastring>,<keystring>)

要使用嵌入式換行符簽署字符串(AWS我正在與您交談!)您必須執行以下操作(基於AWS S3示例)

pre {
  raw_string = uri:unescape("GET%0A%0A%0AWed, 28 Mar 2007 01:29:59 +0000%0A/");
  sample_key = "uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o";
  signature = math:hmac_sha1_base64(raw_string, sample_key);
  expected = "Db+gepJSUbZKwpx1FR0DLtEYoZA=";
  passfail = (signature eq expected) => "pass" | "fail";
}

uri:decode()函數返回一個帶有正確換行符的字符串,其中\\n\\n\\n不會。 您可能必須在簽名中添加尾隨'='。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM