3

jsr223 サンプラーに次のコードがあります。

var key = "key";
var dateStamp = "20160329T134359Z";
var regionName = "us-east-1";
var serviceName = "execute-api";

   var kDate= Crypto.HMAC(Crypto.SHA256, dateStamp, "AWS4" + key, { asBytes: true})
   var kRegion= Crypto.HMAC(Crypto.SHA256, regionName, kDate, { asBytes: true });
   var kService=Crypto.HMAC(Crypto.SHA256, serviceName, kRegion, { asBytes: true });
   var kSigning= Crypto.HMAC(Crypto.SHA256, "aws4_request", kService, { asBytes: true });
   vars.put("AWSKey", kSigning);

実行すると、次のエラーが表示されます: Response code: 500 Response message: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "Crypto" is not defined. (#6) in at 行番号 6

明らかに、私は暗号ライブラリを持っていません。しかし、私はそれらをロードする方法に途方に暮れています。関連するすべての js をダウンロードし、それらを /lib フォルダーに配置しましたが、まだ何もありません。このファイルをダウンロードしました: https://github.com/Boussetta/CryptoJS-v3.1.2 上記のコードの関数を処理しますが、私の人生では、それをインポートする方法がわかりません。

ティア

4

1 に答える 1

2

JavaScript を使用する場合は、次の 2 つのオプションがあります。

  1. 次のようなRhinoload()メソッドを使用します。

    load("crypto.js")

  2. JavaScriptからApache Commons CodecのHmacUtilsクラスを使用する

    var rawhmac = org.apache.commons.codec.digest.HmacUtils.hmacSha1(key,data)
    var encoded = org.apache.commons.codec.binary.Base64.encodeBase64String(rawhmac)
    

ただし、オプション 3 をお勧めします - JavaScript の代わりに "groovy" 言語に切り替えると、次のことが可能になります。

于 2016-03-30T06:16:13.730 に答える