import org.apache.commons.codec.digest.DigestUtils;
import org.apache.jmeter.config.Arguments;
import java.util.Base64;
import sun.misc.BASE64Encoder;
//开始处理
log.info("接口调用前置处理器-签名/加密相关处理");
Arguments args = sampler.getArguments();
//获取请求参数
String bodyin = args.getArgument(0).getValue();
log.info("业务参数:{}",bodyin);
""因为字符串中含有中文,导致签名验证总是失败,后来百度发现是编码方式不一致的问题,给含中文的字符串加上编码方式,问题解决了""
""此处啰嗦一句,fastJson对json序列化的时候,会导致原来的顺序发生变化,那么也可能导致验证签名失败""
String body = URLEncoder.encode(bodyin, "utf-8"); //参数增加编码方式,避免因为字符串含中文而验签失败
//获取时间
long dateTime = new Date().getTime();
String Stime = String.valueOf(dateTime);
//获取key
String Skey = "${H_key}";
//组合加密字符串
String madei = body + Skey + Stime;
//MD5加密
String p_md5 = DigestUtils.md5Hex(bodyin + Skey + Stime);
//base64加密
BASE64Encoder encode = new sun.misc.BASE64Encoder();
String Bincode = encode.encode(p_md5.getBytes());;
log.info("64weijiamijieguo:"+Bincode);
log.info("MD加密结果:"+p_md5);
log.info("验签字符串为:"+ madei);
vars.put("rbody",body);
vars.put("newdate",Stime);
vars.put("Comment",Bincode);