jmeter--8.加密传输

目录

1. Base64加密

2. MD5加密

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

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


1. Base64加密

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

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 预处理程序

//导包
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进行加密

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脚本进行加密--公钥根据接口需求获取(可以直接问开发),这里只是一个示例

#通过公钥加密
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】

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/328676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pycharm Terminal 无法激活conda环境

1.问题 Failed to activate conda environment. Please open Anaconda prompt, and run conda init powershell there. 这导致我们无法在Pycharm中使用conda命令 2.解决办法 修改为第二个,然后重启Terminal 再打开时发现已经是当前的conda环境

在客户端访问远程Linux服务器的私有IP地址的URL

文章目录 环境背景SSH tunnel和正向/反向代理步骤第一步第二步效果考一考 其它多次跳转另一种方法:正向代理 参考 环境 服务器:Ubuntu 22.04客户端:Mac 14.2.1 背景 在远程Linux服务器上搭建了minikube环境。minikube提供了dashboard功能&…

LLM:Scaling Laws for Neural Language Models (上)

论文:https://arxiv.org/pdf/2001.08361.pdf 发表:2020 摘要1:损失与模型大小、数据集大小以及训练所用计算量成比例,其中一些趋势跨越了七个量级以上。 2:网络宽度或深度等其他架构细节在很大范围内影响较小。3&…

mac pro “RESP.app”意外退出 redis desktop manager

文章目录 redis desktop manager下载地址提示程序含有恶意代码“RESP.app”意外退出解决办法:下载python3.10.并安装重新打开RESP如果还是不行,那么需要替换错误路径(我的没用)外传 最近在研究redis的消息,看到了strea…

mac查看maven版本报错:The JAVA_HOME environment variable is not defined correctly

终端输入mvn -version报错: The JAVA_HOME environment variable is not defined correctly, this environment variable is needed to run this program. Java环境变量的问题,打开bash_profile查看 open ~/.bash_profile export JAVA_8_HOME/Library/Java/JavaVirtualMachine…

Elasticsearch的基本功能和使用

Elasticsearch ,简称为 ES,是一款非常强大的开源的高扩展的分布式全文 检索引擎,可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的 存储、检索数据.还可以可以实现日志统计、分析、系统监控等功能. 官网:https://www.elastic.c…

Spark---累加器和广播变量

文章目录 1.累加器实现原理2.自定义累加器3.广播变量 1.累加器实现原理 累加器用来把 Executor 端变量信息聚合到 Driver 端。在 Driver 程序中定义的变量,在Executor 端的每个 Task 都会得到这个变量的一份新的副本,每个 task 更新这些副本的值后&…

利用HTML和CSS实现的浮动布局

代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>*{m…

Python武器库开发-武器库篇之Whois信息收集模块化(四十五)

Python武器库开发-武器库篇之Whois信息收集模块化(四十五) 我们在进行渗透的时候&#xff0c;需要进行全面的信息收集&#xff0c;除了主动信息收集之外&#xff0c;我们还经常会进行被动信息收集&#xff0c;Whois信息收集就是其中的一种,我们可以利用一些网站进行Whois信息收…

区间预测 | Matlab实现LSTM-Adaboost-ABKDE的集成学习长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现LSTM-Adaboost-ABKDE的集成学习长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现LSTM-Adaboost-ABKDE的集成学习长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一…

Java--HashMap中put()方法是如何实现的

一、什么是HashMap HashMap是Java中常用的数据结构之一&#xff0c;它基于哈希表实现&#xff0c;提供了快速的键值对存取能力。在HashMap中&#xff0c;put方法是最常用的方法之一&#xff0c;用于将键值对存储到HashMap中。本文将深入探究HashMap的put方法的实现原理&#x…

vue 作用域插槽、具名插槽

在子组件中使用了具名插槽<slot name"qwe" :games"games" x"我是x" y"我是y"></slot>&#xff0c; 相应的在父组件中使用<template #qwe"data">的语法来接收插槽内容。 这个语法是ok的&#xff0c; 但…

微信使用wx.getLocation

1&#xff0c;小程序管理后台 -「开发」-「开发管理」-「接口设置」” 中完成权限申请&#xff1b; 2&#xff0c;需在 app.json 中声明其需调用的地理位置相关接口 "permission": {"scope.userLocation": { "desc": "你的位置信息将用于小…

如何在 Python3 中使用变量

介绍 变量是一个重要的编程概念&#xff0c;值得掌握。它们本质上是在程序中用于表示值的符号。 本教程将涵盖一些变量基础知识&#xff0c;以及如何在您创建的 Python 3 程序中最好地使用它们。 理解变量 从技术角度来说&#xff0c;变量是将存储位置分配给与符号名称或标…

M1卡和CPU卡学习

目录介绍 01.整体概述介绍 1.1 项目背景说明1.2 IC智能卡说明1.3 基础概念介绍 02.CPU卡基础学习 2.1 CPU操作流程2.2 读卡器与卡交互指令2.3 APDU指令格式2.4 APDU指令组成2.5 发送指令详细剖析2.6 响应指令详细解析 03.M1卡基础学习 3.1 什么是M1卡3.2 M1卡数据结构3.3 M1扇…

晶振线路匹配需要进哪一些测试

晶振线路匹配的测试对于确保晶振性能的稳定性和可靠性至关重要&#xff0c;那么晶振线路匹配需要进哪一些测试呢? 晶振线路匹配测试是确保晶振性能稳定性和可靠性的关键环节。为了全面评估晶振的性能&#xff0c;需要进行一系列的测试&#xff0c;包括负载电容测试、驱动电平…

HarmonyOS 转场动画

今天 我们来说 组件内转场动画 我们可以先编写代码如下 Entry Component struct Index {State flag:boolean true;build() {Column({space: 30}) {Button("转换").onClick(()> {})Image("https://img1.baidu.com/it/u1699929707,733321099&fm253&…

nxp s32k144芯片使用J-LINK程序刷写

1.nxp s32k144 (1)打开软件&#xff1a;J-Flash V6.30j (2)新建工程&#xff1a;file->new project (3)选择芯片型号和 target interface (4)可以保存芯片和接口配置 (5)打开程序&#xff1a;File->open data file &#xff08;6&#xff09;程序刷写&#xff1a;T…

【UE5】交互式展厅数字博物馆交互是开发实战课程

长久以来&#xff0c;我们总是不断被初学者问到类似这样的问题&#xff1a;如何从头到尾做一个交互式程序开发项目&#xff1f;本套课程尝试对这个问题进行解答。 课程介绍视频如下 【UE5】数字展厅交互式开发全流程 【谁适合学习这门课】 本套课程面向初学者&#xff0c;满足…

【加强版】小学数学出题,加减乘除混合运算,支持自定义数字,一键打印

在线预览&#xff1a;在线HTML代码预览和运行工具 - UU在线工具 复制下面代码后到该地址预览即可 注意&#xff1a;在线预览不能打印。如需打印&#xff0c;在电脑本地上新建文本文档&#xff0c;粘贴代码后保存&#xff0c;然后把文件后缀改为.html运行&#xff0c;出题点击…