3

Amazon の SimpleDB 用のモジュールを作成しています。HMAC-SHA アルゴリズムを使用して REST 要求に署名する必要があります。(詳細はこちら

この署名をコンピューター化する機能があると言われましたが、ドキュメントで見つけることができません。関数は何と呼ばれ、その引数はどのように見えますか?

4

3 に答える 3

1

編集済み:以下が機能するはずです:

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

于 2011-04-12T17:55:44.713 に答える
1

改行が埋め込まれた文字列に署名するには (AWS I'm talk to you!)、次のことを行う必要があります (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ません。署名の末尾に「=」を追加する必要がある場合があります。

于 2011-05-20T16:24:02.317 に答える
1

HMAC は、ほとんどのプラットフォームの暗号化ライブラリにある標準関数です。Amazon は、リンク先のドキュメント ページにいくつかの例を示しています。

Java の場合は、javax.crypto.Macにあります。

.Net の場合は、System.Security.Cryptographyを調べます。

KRLの場合、組み込みのストック ソリューションは見つかりませんでした。JavaScript を埋め込むことができるように見えるので、jsSHAの実装が役立つ可能性があります。数学ライブラリにはsha1関数があり、 RFC2104に従って HMAC を実装することはそれほど難しくないようです。

于 2011-04-11T18:35:36.450 に答える