赞
踩
重点:
以AES CBC加密为例
package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; public class AES_CBC_Encrypt extends AbstractFunction { //自定义function的描述 private static final List<String> desc = new LinkedList<>(); //function名称 private static final String KEY = "__AES_CBC_Encrypt"; static { desc.add("json_input"); desc.add("secret_input"); desc.add("iv_input"); } private CompoundVariable json_input; private CompoundVariable secret_input; private CompoundVariable iv_input; // 函数的逻辑执行主体 /** {@inheritDoc} */ @Override public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String bodyData = String.valueOf(json_input.execute()); String secret_key = String.valueOf(secret_input.execute()); String iv_key = String.valueOf(iv_input.execute()); return AES_CBC.encryptCBC(bodyData, secret_key, iv_key); } // 用来接收和处理GUI界面的参数的传值 /** {@inheritDoc} */ @Override public void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException { checkParameterCount(collection, 3); Object[] values = collection.toArray(); json_input = (CompoundVariable) values[0]; secret_input = (CompoundVariable) values[1]; iv_input = (CompoundVariable) values[2]; } // 用来定义函数的名称,把自定义的内容显示在函数对话框中 /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } // 用来设置GUI界面的函数对话框,把自己定义的参数给显示在jmeter的GUI界面上 /** {@inheritDoc} */ @Override public List<String> getArgumentDesc() { return desc; } public static void main(String[] args) { // AES支持三种长度的密钥:128位、192位、256位。 // 代码中这种就是128位的加密密钥,16字节 * 8位/字节 = 128位。 String srt = "123456778"; String iv_seed = "1234567887654321"; System.out.println("密钥key:" + srt); System.out.println("iv:" + iv_seed); System.out.println("--------AES_CBC加密解密---------"); String cbcResult = AES_CBC.encryptCBC(aes, srt, iv_seed); System.out.println("aes_cbc加密结果:" + cbcResult); System.out.println(); System.out.println("---------解密CBC---------"); String cbcDecrypt = AES_CBC.decryptCBC(cbcResult, srt, iv_seed); System.out.println("aes解密结果:" + cbcDecrypt); System.out.println(); } }
https://download.csdn.net/download/weixin_39451323/88218178
加密:
${__AES_CBC_Encrypt({"token":"0e84b297-d8f2-4779-b7f1-60966ed19ce1"},qwertyuiiuytrewq,1234567887654321)}
解密:
${__AES_CBC_Decrypt(RwHL3jF01WDd9T3tKRUi2XIWuPJ/a5H78mExd8I3/fArE6778r7EsbSUwjx7cncAkkfrfc6QV53NrStWBnissA==,qwertyuiiuytrewq,1234567887654321)}
参考资料:jmeter官方函数https://github.com/ufctester/apache-jmeter/tree/master/src/functions/org/apache/jmeter/functions
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。