jmetr _MD5加密_获取签名

Posted 凯宾斯基

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmetr _MD5加密_获取签名相关的知识,希望对你有一定的参考价值。

要达到的目的:

app每个请求里面 请求头都带有一个 sign 的参数,

他的值是通过 开发自己设计的拼接方式 再通过md5加密生成

我们就是要生成这个sign的值出来

 

准备:

和开发要到签名组成公式:  这里公司具体的签名算法已在我的百度云盘有详细讲解

注意: 这里最后的拼接公式是 body(里的请求参数)+uid+token+version+time+"ibroker-wpd"

body里面有多个参数&连接  (注意 这里自己踩了一个坑,没有加&,并且要按首字母大小排序)

 后记:

(踩坑)

用python写的时候忘记请求参数是用=号去拼接,用了:号 尴尬

 

用BeanShell  写 md5的java 函数写法:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

String MD5(String s) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(s.getBytes("utf-8"));
return toHex(bytes);
}
catch (Exception e) {
throw new RuntimeException(e);
}
}

String toHex(byte[] bytes) {

final char[] HEX_DIGITS = "0123456789abcdef".toCharArray();
StringBuilder ret = new StringBuilder(bytes.length * 2);
for (int i=0; i<bytes.length; i++) {
ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]);
ret.append(HEX_DIGITS[bytes[i] & 0x0f]);
}
return ret.toString();
}

String params = "version=1";
String md5_src= params+vars.get("uid")+vars.get("token")+vars.get("app_version")+vars.get("timestamp")+vars.get("sign_salt");
//log.info("md5_src:"+md5_src);
String result = MD5(md5_src);
//log.info("md5:"+result);
vars.put("sign",result);

踩坑: version=1 其实是 请求体参数里的请求参数 要使用&拼接

最后的组成:(注意要使用後置的beanshell)

 

 

 

 

 

源码和这个jmeter文件,存在在了我的百度云盘里面。

 

以上是关于jmetr _MD5加密_获取签名的主要内容,如果未能解决你的问题,请参考以下文章

API接口签名验证_MD5加密出现不同结果的解决方法

day19_MD5加密_Apache DBUtils_监听器 知识回顾

python-day6-os模块及md5加密

[接口测试]JMeter中的字符串加密处理

接口测试--参数实现MD5加密签名规则

php时间缀签名函数