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

现在,当我运行它时,我收到此错误:响应代码:500 响应消息:javax.script.ScriptException:sun.org.mozilla.javascript.internal.EcmaError:ReferenceError:未定义“加密”。(#6) 在第 6 行

显然我没有加密库。但是我不知道如何加载它们。我下载了所有相关的 js 并将它们放在 /lib 文件夹中,但仍然没有。我下载了这个文件:https ://github.com/Boussetta/CryptoJS-v3.1.2 它处理了上面代码中的函数,但对于我来说,我不知道如何导入它。

TIA

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 - 切换到“groovy”语言而不是 JavaScript,这样您就可以:

于 2016-03-30T06:16:13.730 回答