md5加密接口测试实战(md5加密解密原理)

2023-02-17 10:40:55 摩斯密码知识 思思

jmeter如何使用使用MD5加密?

方法/步骤

1、创建java文件:在指定的报名上右键单击-》new-》class文件,

2、在弹出的窗口中填写class文件名称,点击确定,生成java文件,

3、编写加密代码,使用md5将账号和密码组合加密。

4、编写解密代码,将上一步加密的密码,传入解密方法解密,

5、调用加密解密方法,测试代码是否可用

md5加密接口测试实战(md5加密解密原理) 第1张

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

系统在提供接口给第三方系统使用时,通常为了安全性会做接口加密。

设计原则 :使用HTTPS安全协议 或 传输内容使用非对称加密,这里采用后者。

在对参数进行加密,生成sign时,相同的参数两次加密的结果不一样。

加密规则:

1.拼接出来的字符串不一致

测试时,在加密前将要加密的字符串打印出来比较,发现两次字符串一致。

2.编码问题

加密时,两次的默认编码不一致。

在上述加上默认编码: byte[] btInput = content.getBytes("utf-8"); ,问题解决。

简单实现:

1.接口调用方和接口提供方约定好统一的参数加密算法。

2.接口调用方在调用时把加密后的signature放在参数中去请求接口。

3.判断时间戳有效期。

4.将参数用约定号的加密算法进行加密,与参数中的signature进行比较,一致则调用接口。

MeterSphere接口测试中使用beanshell脚本进行md5加密

import org.apache.commons.codec.digest.DigestUtils;

//导入org.apache.commons.codec.digest.DigestUtils;

String timeStamp = "${__time(/1000,)}";

//定义时间timeStamp=服务器时间;

String randomStr = "${__Random(11111111,99999999)}";

//定义时间随机数=8位1-9的随机数;

String tmp = timeStamp + randomStr + "xxxxx";

//定义tmp=时间timeStamp,8位随机数和密码xxxxx;

log.info("timeStamp:" + timeStamp);

//打印timeStamp;

log.info("randomStr:" + randomStr);

//打印randomStr;

log.info("tmp:" + tmp);

//打印tmp;

//String un = DigestUtils.sha1Hex(tmp);

//定义un=哈希sha1加密的tmp;

//log.info("un:" + un);

//打印un;

String signature = DigestUtils.md5Hex (DigestUtils.sha1Hex(tmp)).toUpperCase();

//定义signature==哈希sha1加密的tmp然后再进行md5加密后进行大写;

log.info("signature:" + signature);

//打印signature;

vars.put("signature", signature);

//打印signature;

vars.put("timeStamp", timeStamp);

//打印timeStamp;

vars.put("randomStr", randomStr);

//打印randomStr;