#jmeter
#jmeter
Вопрос:
У меня есть тестовая строка «abc», для которой я буду использовать функцию Jmeter SHA-256 (т.Е. $ {__digest(SHA-256,abc,,,)}), но это вернет только шестнадцатеричное значение (т.Е. «ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad»). Мне нужно значение base64 (т.Е. «ungWv48Bz pBQUDeXa4iI7ADYaOWF3qctBD /YfIAFa0=») [которое отличается от значения в кодировке base64]. Есть ли какой-либо способ преобразовать шестнадцатеричное значение только в кодировку base64, а не в кодировку base64?
Ссылки см. На этом сайте: https://hash.online-convert.com/sha256-generator
И вот результаты :
- шестнадцатеричный код: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
- base64: ungWv48Bz pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= (Мне нужно это значение)
Любая помощь будет оценена.
Ответ №1:
Мохит, я думаю, тебе нужно изменить вопрос. Это должно быть от hex
до base64
. Пожалуйста, проверьте следующий сценарий.
Пожалуйста, добавьте это в BeanShell PreProcessor
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex;
String creds = "${__digest(SHA-256,abc,,,)}";
byte[] decodedHexNEW = Hex.decodeHex(creds.toCharArray());
String result = Base64.encodeBase64String(decodedHexNEW);
log.info("HEX TO BASE 64----------------->" result);
//vars.put("convertedString",new String(result));
Это преобразует то, что вы ожидаете,
ungWv48Bz pBQUDeXa4iI7ADYaOWF3qctBD /YfIAFa0= [Expected String]
ungWv48Bz pBQUDeXa4iI7ADYaOWF3qctBD /YfIAFa0 = [Result String]
Для получения дополнительной информации, https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Base64.html
Комментарии:
1. Спасибо @Jyoti, этот фрагмент кода также сработал как шарм. Я мало знаком с кодированием, поэтому, пожалуйста, извините за мой глупый вопрос здесь: — Как использовать переменную «result» в других запросах Я пытался использовать ее с синтаксисом «$ {result}», но не смог ее использовать. Если бы вы тоже могли мне помочь в этом?
2. Пожалуйста, включите последнюю строку
vars.put("convertedString",new String(result));
, и после этого вы можете использовать ее либо с помощьюvars.get("result")
или${result}
. Я отключил его, потому что не хотел его использовать.
Ответ №2:
Я считаю, что следующая функция __groovy() должна помочь вам:
${__groovy('abc'.digest('SHA-256').decodeHex().encodeBase64(),)}
ДЕМОНСТРАЦИЯ:
Дополнительная информация о Groovy scripting в JMeter: Apache Groovy — почему и как вы должны его использовать
Комментарии:
1. Я бы предпочел это, это проще
2. Большое спасибо @Dmitri T, это сработало. Не имел ни малейшего представления о функциях Groovy. Спасибо за помощь. 🙂