Jmeter加密驗證簽名失敗總是有原因的


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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM