Как извлечь значение Base64 (не в кодировке base64) из хэша SHA-256 в jmeter?

#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. Спасибо за помощь. 🙂