在Jmeter进行接口测试中,会存在接口传参时候在字段base64加密部分参数,可能为username也可能password,此处以password为例。
1、用户自定义加密参数变量
2、新增beanshell 取样器
加密代码:
import org.apache.commons.net.util.Base64;
//String source = vars.get("name");
String source = "${password}"; //输入password原始值
byte[] encodedBytes = Base64.encodeBase64(source.getBytes("UTF-8"));
String encoded = new String(encodedBytes);
log.info("加密后的值------->>"+encoded);
vars.put("password-b64", encoded); //"password-b64"替换"password",引用使用"${password-b64}"
3、新增调试取样器
4、实际接口调用中实现
5、调用接口中取样器得到结果
6、实际执行接口调用
7、以上仅实现加密的调用,若需要解密,代码参考:
import java.io.*;
import org.apache.commons.codec;
import sun.misc.BASE64Decoder;
log.info("------------开始加密-------------------");
String encryption = new sun.misc.BASE64Encoder().encode("hc_staging".getBytes());
vars.put("encryption", encryption);
log.info("加密后的值------->>"+encryption);
log.info("------------加密结束-------------------");
log.info("------------开始解密-------------------");
org.apache.commons.codec.binary.Base64 base64=new org.apache.commons.codec.binary.Base64();
String decrypt=new String(base64.decode("aGNfc3RhZ2luZw=="));
vars.put("decrypt",decrypt);
log.info("解密后的值------->>"+decrypt);
log.info("------------解密结束-------------------");