计算HMAC-SHA签名

我正在为亚马逊的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是一种标准功能,可以在大多数平台的加密库中找到。亚马逊在您链接到的文档页面上显示了几个示例。 对于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
不是。您可能必须在签名中添加尾随'='。     

要回复问题请先登录注册