ssm*_*ith 5 groovy jmeter sha256 jmeter-5.0
我正在尝试计算 Groovy 版本 2.4.16 中的 sha256 哈希值。这是 jmeter 测试的一部分,这是它支持的 Groovy 版本,我认为我无法更改它。我知道在 Groovy 2.5 中您可以使用如下代码:
def challenge = verifier.digest('SHA-256');
log.info 'challenge' + challenge
Run Code Online (Sandbox Code Playgroud)
但这在 2.4 中不起作用/不存在。我怎样才能在 Groovy 2.4 中做到这一点?
我用上面的代码得到的错误是:
javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.digest() is applicable for argument types: (java.lang.String) values: [SHA-256]
Possible solutions: getAt(java.lang.String), next(), size(), toSet(), size(), toList()
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:324) ~[groovy-all-2.4.16.jar:2.4.16]
at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72) ~[groovy-all-2.4.16.jar:2.4.16]
at javax.script.CompiledScript.eval(Unknown Source) ~[?:1.8.0_221]
at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:223) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.modifiers.JSR223PreProcessor.process(JSR223PreProcessor.java:44) [ApacheJMeter_components.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.runPreProcessors(JMeterThread.java:935) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:537) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.1.1 r1855137]
...
Run Code Online (Sandbox Code Playgroud)
一般情况下,您可以使用DigestUtils类函数进行加密,特别是对于您的情况,它是DigestUtils.sha256Hex()
以下声明:
vars.put('foo', org.apache.commons.codec.digest.DigestUtils.sha256Hex('bar'))
Run Code Online (Sandbox Code Playgroud)
将把行的 SHA-256 编码哈希存储bar到fooJMeter 变量中,您将能够根据${foo}需要访问它
vars代表JMeterVariables类实例,它提供对当前线程上下文中所有 JMeter 变量的读/写访问。查看您应该与 Groovy 一起使用的前 8 个 JMeter Java 类文章,了解有关此内容以及可用于 Groovy 脚本的其他 JMeter API 简写的更多信息。