amazon simpledb -计算HMAC-SHA签名



我正在为Amazon的SimpleDB编写一个模块。它们要求使用HMAC-SHA算法对REST请求进行签名。(详情请点击这里。)

我被告知有一个函数可以计算这个签名,但是我在文档中找不到它。这个函数叫什么,它的参数是什么样子的?

编辑:

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>)

HMAC是一个标准函数,可以在大多数平台的加密库中找到。Amazon在您链接到的文档页面上显示了几个示例。

对于Java,您可以在javax.crypto.Mac

中找到它

对于。net,查看System.Security.Cryptography

对于KRL,我没有找到任何内置的库存解决方案。由于嵌入javascript似乎是可能的,所以jsSHA实现可能是有用的。数学库中有一个sha1函数,根据RFC2104实现HMAC似乎并不困难。

要使用嵌入的换行符对字符串进行签名(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()函数返回一个带有适当换行符的字符串,而nnn没有。您可能需要在签名后面添加'='。

相关内容

  • 没有找到相关文章

最新更新