如何从jmeter中的SHA-256哈希中提取Base64(不是Base64编码)值?

如何从jmeter中的SHA-256哈希中提取Base64(不是Base64编码)值?,jmeter,Jmeter,我有一个测试字符串“abc”,我将在其上使用SHA-256 Jmeter函数(即${uu digest(SHA-256,abc,,,,,,)),但这将只返回十六进制值(即“BA7816BF8F01CFEA414140DE5DAE223B00361A396177A9CB410FF61F20015AD”)。我需要base64值(即“ungWv48Bz+pbqudexa4iii7adyaowf3qctbd/YfIAFa0=”)[与base64编码值不同]。有没有办法将十六进制值仅转换为base64而不

我有一个测试字符串“abc”,我将在其上使用SHA-256 Jmeter函数(即${uu digest(SHA-256,abc,,,,,,)),但这将只返回十六进制值(即“BA7816BF8F01CFEA414140DE5DAE223B00361A396177A9CB410FF61F20015AD”)。我需要base64值(即“ungWv48Bz+pbqudexa4iii7adyaowf3qctbd/YfIAFa0=”)[与base64编码值不同]。有没有办法将十六进制值仅转换为base64而不是base64编码值

有关参考资料,请参阅本网站:

结果如下:

  • 十六进制:BA7816BF8F01CFEA414140DE5DAE223B00361A396177A9CB410FF61F20015AD
  • base64:ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=(我需要这个值)

任何帮助都将不胜感激。

莫希特,我想你需要改变这个问题。它应该是从
hex
base64
。请检查下面的脚本

请将此添加到
BeanShell预处理器中

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=
[预期字符串]
ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=
[结果字符串]

更多参考资料,

我相信以下内容可以帮助您:

${__groovy('abc'.digest('SHA-256').decodeHex().encodeBase64(),)}
演示:


关于JMeter中Groovy脚本的更多信息:

我更喜欢这种方式,它更简单一点,因为@Dmitri它工作得很好。对Groovy函数没有太多的了解。谢谢你的帮助。:)谢谢@Jyoti,这段代码也很有魅力。我不熟悉太多的编码,所以请原谅我在这里的愚蠢问题:-如何在其他请求中使用变量“result”,我尝试使用语法“${result}”,但无法使用它。如果你也能在这方面帮助我,请启用最后一行
vars.put(“convertedString”,newstring(result))之后,您可以通过
vars.get(“result”)
${result}
使用它。我禁用了它,因为我不想使用它。