jmeter--8.加密传输

目录

[1. Base64加密](#1. Base64加密)

[2. MD5加密](#2. MD5加密)

[3. SHA加密(sha1\sha\sha224\sha256\sha384\sha512)](#3. SHA加密(sha1\sha\sha224\sha256\sha384\sha512))

[4. RSA加密-公钥加密,私钥解密](#4. RSA加密-公钥加密,私钥解密)


1. Base64加密

1.1 在需要加密传输的接口下新增BeanShell 预处理程序,${username}可替换成value值,但是不利于参数化

java 复制代码
import java.util.Base64;
//初始化一个Base64对象,调用encodeToString()方法
String Musername = Base64.getEncoder().encodeToString("${username}".getBytes("UTF-8"));
String Mpassword = Base64.getEncoder().encodeToString("${password}".getBytes("UTF-8"));
log.info(Musername);
log.info(Mpassword);
//设置变量
vars.put("Musername",Musername);
vars.put("Mpassword",Mpassword);

2. MD5加密

2.1 使用函数助手进行加密

{__digest(MD5,{username},,,)}

2.2 使用beanshell进行加密

在需要加密传输的接口下新增BeanShell 预处理程序

java 复制代码
//导包
import org.apache.commons.codec.digest.DigestUtils;
//md5加密
String Musername = DigestUtils.md5Hex("${username}");
String Mpassword = DigestUtils.md5Hex("${password}");
//传值
vars.put("Musername",Musername);
vars.put("Mpassword",Mpassword);

3. SHA加密(sha1\sha\sha224\sha256\sha384\sha512)

3.1 使用函数助手进行加密--注意函数助手不支持sha-3加密

{__digest(sha-1,{username},,,)}

2.2 使用beanshell进行加密

java 复制代码
import org.apache.commons.codec.digest.DigestUtils;
String username = DigestUtils.sha512Hex("${username}");
String password = DigestUtils.sha512Hex("${password}");
log.info("username加密结果为:"+username);
log.info("password加密结果为:"+password);

4. RSA加密-公钥加密,私钥解密

需要引入python脚本进行加密--公钥根据接口需求获取(可以直接问开发),这里只是一个示例

python 复制代码
#通过公钥加密
def rsa_jiami():
    # 接收cmd命令里面的参数
    parse = argparse.ArgumentParser()
    parse.add_argument("-t", "--ticket", action="append")
    args = parse.parse_args()
    ticket = args.ticket
    #print("ticket:%s" % ticket)
    #导入公钥
    public_key_str = "-----BEGIN RSA PUBLIC KEY-----\nMIGJAoGBALO7UPE26anTGHND2Q54zYYPusDx+tbO1Yia7zoxpZediw+Baea7aFZC\nJ+ZvWd5ZBTopuWvb8hNkY24eBHcXN0pU32WjsH9REp1kXhxbndnw+u3diaoUFqVc\n66xl+LXEo1Y9oDWfkGCir2JnN0aieUiPlHDLhmc+LII/ZDspITKDAgMBAAE=\n-----END RSA PUBLIC KEY-----"
    pubkey = rsa.PublicKey.load_pkcs1(public_key_str.encode())

    #加密用户名
    username_str = rsa.encrypt(str(ticket[0]).encode("utf-8"),pubkey)
    #把二进制转化成字符串格式
    username_miwen = base64.b64encode(username_str).decode("utf-8")
    print(username_miwen)
    print("测试")
    # 加密密码
    password_str = rsa.encrypt(str(ticket[1]).encode("utf-8"), pubkey)
    # 把二进制转化成字符串格式
    passsword_miwen = base64.b64encode(password_str).decode("utf-8")
    print(passsword_miwen)

if __name__ == '__main__':
    rsa_jiami()

beanshell调用

注意这里需要安装rsa,不然会引用失败。在控制台安装【pip install rsa】

java 复制代码
import java.io.BufferedReader;  //导包
import java.io.InputStreamReader;

String command = "cmd /c python D:/study/course/Jmeter/RSAjiami.py -t ${username} -t ${password}";  //组建cmd命令并执行py文件
Runtime rt = Runtime.getRuntime(); //初始化一个运行时对象
Process pr = rt.exec(command); //通过运行时对象运行cmd命令。

pr.waitFor();  //运行时等待

//调用pr进程对象获取到它的输入流。读取pr文件流的内容,并且保存到reponse_data
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
StringBuilder response = new StringBuilder();
String line = "";
while((line=br.readLine())!=null){
    response.append(line);
};
String reponse_data = response.toString();
br.close();

log.info("reponse_data:"+reponse_data);//打印返回的内容

//获取用户名和密码
String[] miwen = reponse_data.split("测试");
log.info(miwen[0]);
log.info(miwen[1]);
vars.put("Musername",miwen[0]);
vars.put("Mpassword",miwen[1]);
相关推荐
qq_4419960514 分钟前
Mybatis官方生成器使用示例
java·mybatis
这个男人是小帅14 分钟前
【GAT】 代码详解 (1) 运行方法【pytorch】可运行版本
人工智能·pytorch·python·深度学习·分类
Qter_Sean16 分钟前
自己动手写Qt Creator插件
开发语言·qt
xiaoyaolangwj18 分钟前
高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十三)图优化SLAM的本质
学习·机器人·自动驾驶
何曾参静谧20 分钟前
「QT」文件类 之 QIODevice 输入输出设备类
开发语言·qt
巨大八爪鱼21 分钟前
XP系统下用mod_jk 1.2.40整合apache2.2.16和tomcat 6.0.29,让apache可以同时访问php和jsp页面
java·tomcat·apache·mod_jk
静止了所有花开1 小时前
SpringMVC学习笔记(二)
笔记·学习
爱吃生蚝的于勒1 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
码上一元2 小时前
SpringBoot自动装配原理解析
java·spring boot·后端
计算机-秋大田2 小时前
基于微信小程序的养老院管理系统的设计与实现,LW+源码+讲解
java·spring boot·微信小程序·小程序·vue