Как вычислить хэш sha256 в Groovy 2.4 - PullRequest
2 голосов
/ 23 октября 2019

Я пытаюсь вычислить хэш sha256 в Groovy версии 2.4.16. Это часть теста jmeter, и это версия Groovy, которую он поддерживает, и я не думаю, что смогу это изменить. Я знаю, что в Groovy 2.5 вы можете использовать такой код :

def challenge = verifier.digest('SHA-256');
log.info 'challenge' + challenge

, но в 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]
...

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Вы можете использовать функции класса DigestUtils для шифрования в целом и, в частности, для вашего случая это будет DigestUtils.sha256Hex ()

Следующее утверждение:

vars.put('foo', org.apache.commons.codec.digest.DigestUtils.sha256Hex('bar'))

будет хранить закодированный SHA-256 хэш строки bar в foo переменную JMeter, вы сможете получить к ней доступ как ${foo}, где требуется

vars стойкидля экземпляра класса JMeterVariables , и он предоставляет доступ на чтение / запись ко всем переменным JMeter в контексте текущего потока. Ознакомьтесь с 8 лучших Java-классов JMeter, которые вы должны использовать с Groovy , чтобы узнать больше об этом и других сокращениях API JMeter, доступных для скриптов Groovy.

1 голос
/ 23 октября 2019

Используйте функцию JMeter digest вместо SHA-256

${__digest(SHA-256,Felix qui potuit rerum cognoscere causas,mysalt,,)}

Функция дайджеста возвращает зашифрованное значение в конкретном алгоритме хеширования с необязательной солью, заглавными буквами и переменной. name.

Пример использования в поле Parameters и использования вывода с args[0]

...