Jmeter二次开发实现rsa加密

jmeter函数助手提供了大量的函数,像 counter、digest、random、split、strLen,这些函数在接口测试、性能测试中大量被使用,但是大家在实际工作,形形色色的测试需求不同,导致jmeter自带或者扩展插件给我们提供的函数无法全部满足,这个时候我们就可以自己动手,对JMeter进行二次开发。
在这里插入图片描述

接下来我拿aes加密来说明如何实现JMeter二次开发。

首先需要将jmeter的core、functions两个jar包导入到项目工程中。

这两个jar包在jmeter的lib\ext目录下,包的完整名如下所示:

ApacheJMeter_core.jar

ApacheJMeter_functions.jar

接下来定义类,类名Rsa0706,继承抽象类AbstractFunction,

实现其中的4个方法execute()、setParameters()、getReferenceKey()、getArgumentDesc(),具体代码如下所示:
在这里插入图片描述

1、getReferenceKey方法实现
getReferenceKey()方法是用于返回自定义函数的名字,以下代码定义了类成员变量key,值为字符串“__rsa”,key 这个变量的值作为getReferenceKey()方法的返回值。
在这里插入图片描述

2,getArgumentDesc方法实现
getArgumentDesc()用来定义jmeter各入参的描述信息,

咱们要封装的jmeter的rsa加密函数有两个入参,分别是要加密的字符串(即明文),以及加密的公钥,如下代码所示,定义类成员变量desc,将两个入参的描述信息存到这个变量中,作为getArgumentDesc()方法的返回值。

在这里插入图片描述

3,setParameters方法实现
setParameters()方法用于获取JMeter函数的入参值,咱们rsa加密需要两个入参,分别是明文、公钥,参数个数是2,在setParameters()方法需要先检查入参个数的最大值、最小值是不是2,然后将参数集合Collection转成数组存到Object数组变量values中,并定义类成员变量MAX_PARA_COUNT、MIX_PARA_COUNT、plaintextCV、publicKeyCV,分别存最大变量个数、最小变量个数、明文、公钥。

4,execute方法实现
方法execute()里定义的是Jmeter自定义函数的主要逻辑代码,咱们这里放aes加密方法的业务逻辑实现
在这里插入图片描述

然后将调试好的项目打成jar包,拷贝到jmeter的lib\ext目录下。

启动jmeter,可以在jmeter的函数助手界面看到,自定义的__rsa函数,如下截图所示。
在这里插入图片描述

例如公钥:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClvArPDQsHpny6fNi1dVyjwz6GTtuKZ5hy8qb62ndCiGXgH5d9WSPeH6RIA14SMGwFwXAd2btntdmvs0CXtSDRP7cXiomEDgBSoDyNbjblQWFKKresjHuxka37rKUgwsDmsaCBE75nUVghJnqmZBhmZ/m9USdsfBbKPogpuVrNtwIDAQAB

1234567890这串明文经过rsa公钥加密之后,结果如下截图所示
在这里插入图片描述

b9U55CVXTK+LOWuJPscL/074YtDNTr7fQCitxr73Sq9y4/P7q+TY+lm/L5QpTI8cpnJc6Q6V2I6WSUHFsSFmibwsAacdlIWbvjGxIy2z7F+Y0Ymj32GsFpbi85ea4GFhvrvzYDKp1IRUqo4oCWSwx6zV43gD3NFQHaoKKaU91As=

在这里插入图片描述

然后将调试好的项目打成jar包,拷贝到jmeter的lib\ext目录下。

启动jmeter,可以在jmeter的函数助手界面看到,自定义的__rsa函数,如下截图所示。

在这里插入图片描述

例如公钥:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClvArPDQsHpny6fNi1dVyjwz6GTtuKZ5hy8qb62ndCiGXgH5d9WSPeH6RIA14SMGwFwXAd2btntdmvs0CXtSDRP7cXiomEDgBSoDyNbjblQWFKKresjHuxka37rKUgwsDmsaCBE75nUVghJnqmZBhmZ/m9USdsfBbKPogpuVrNtwIDAQAB

1234567890这串明文经过rsa公钥加密之后,结果如下截图所示在这里插入图片描述

b9U55CVXTK+LOWuJPscL/074YtDNTr7fQCitxr73Sq9y4/P7q+TY+lm/L5QpTI8cpnJc6Q6V2I6WSUHFsSFmibwsAacdlIWbvjGxIy2z7F+Y0Ymj32GsFpbi85ea4GFhvrvzYDKp1IRUqo4oCWSwx6zV43gD3NFQHaoKKaU91As=

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

分布式定时任务调度xxl-job

1. xxl-job基本介绍 1.1 Quartz的体系结构 Quartz中最重要的三个对象:Job(作业)、Trigger(触发器)、Scheduler(调度器)。 xxl-job的调度原理:调度线程在一个while循环中不断地获取一定数量的即将触发的Tr…

从数据处理到3D PDF生成:交互式3D PDF生成引擎HOOPS Publish的工作原理

在当今数字化时代,3D技术在各个行业中扮演着重要角色,从制造业到医疗保健,再到建筑设计。为了更好地共享、演示和交互展示3D模型数据,HOOPS Publish作为一款强大的3D引擎,专门用于生成交互式的3D PDF文件。本文将深入探…

superset连接Apache Spark SQL(hive)过程中的各种报错解决

superset连接数据库官方文档:Installing Database Drivers | Superset 我们用的是Apache Spark SQL,所以首先需要安装下pyhive #命令既下载了pyhive也下载了它所依赖的其他安装包 pip install pyhive#多个命令也可下载 pip install sasl pip install th…

【xv6操作系统】Lab systems calls

一、实验前须知 阅读 xv6 文档的第 2 章和第 4 章的 4.3 节和 4.4 节以及相关源文件: 系统调用的用户空间代码在 user/user.h 和 user/usys.pl 中。 内核空间代码在 kernel/syscall.h 和 kernel/syscall.c 中。 与进程相关的代码在 kernel/proc.h 和 kernel/proc.c…

186基于matlab的信号盲源分离算法

基于matlab的信号盲源分离算法,包括变步长盲源分离(EASI),RLS(自然梯度和普通梯度),并将三种方法分离结果进行对比。程序已调通,可直接运行。 186 信号盲源分离算法 变步长盲源分离 (xiaohongshu.com)

【开源】SpringBoot框架开发河南软件客服系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、系统展示四、核心代码4.1 查询客户4.2 新增客户跟进情况4.3 查询客户历史4.4 新增服务派单4.5 新增客户服务费 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的河…

通过esp32cam拍摄图片上传至PC并通过YOLO进行目标检测

通过esp32cam拍摄图片上传至PC并通过YOLO进行目标检测 一.通过esp32cam拍摄照片并上传至PC二.训练自己的数据集三.AutoDL AI算力云的使用1.账号注册2.GPU选取3.GPU使用4.开机训练 四.数据集的使用 一.通过esp32cam拍摄照片并上传至PC 文章链接: https://blog.csdn.net/qq_6297…

Javaweb day13 day14 day15

spring boot 快速入门 写法 http协议 请求协议 响应协议 协议解析 Tomcat

leetcode72. 编辑距离

leetcode72. 编辑距离 题目 思路 dp[i][j] 代表 word1 到 i 位置转换成 word2 到 j 位置需要最少步数,所以, 当 word1[i] word2[j],dp[i][j] dp[i-1][j-1]; 当 word1[i] ! word2[j],dp[i][j] 1 min(dp[i-1][j-1]…

智慧灯杆-智慧城市照明现状分析(1)

城市道路照明是城市公共设施的重要组成部分,而随着城镇化建设的推进,城市道路照明路灯的数量越来越多,能耗越来越高,供电趋于紧张。此外,城市照明的维护工作和高昂的维护成本(人工控制、路灯巡查等),给城市管理造成了巨大的困难。管理部门需要更有效率的管理和节能方案…

Linux配置.bashrc文件导致各种命令(vim、sudo)失效。

Linux配置.bashrc文件导致各种命令(vim、sudo)失效。 起因是 nvcc-V一直报错:-bash:nvcc: command not found 踩坑记录:上网一查说是没有配置cuda的环境变量。于是去修改了bashrc文件,在最下面…

Vue开发环境构建

相关依赖 1.安装Node https://nodejs.org/en/ 验证是否安装 λ node -v v20.10.0 2.安装cnpm镜像 npm install -g cnpm --registryhttps://registry.npm.taobao.org 3.webpack:构建工具 4.开发工具vscode 安装插件:扩展-搜索vetur,vscode-icon,chinese, 搭…

Java 封装 继承 多态(深入理解)

登神长阶 第二阶 封装 继承 多态 🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀&am…

Visual Studio 2019重装vs2019打不开.netcore项目

无法打开项目文件。 .NET SDK 的版本 7.0.306 至少需要 MSBuild 的 17.4.0 版本。当前可用的 MSBuild 版本为 16.11.2.50704。请将在 global.json 中指定的 .NET SDK 更改为需要当前可用的 MSBuild 版本的旧版本。 无法打开项目文件。 .NET SDK 的版本 7.0.306 至少需要 MSBui…

Haproxy 负载均衡集群

一. Haproxy 1. Haproxy 介绍 HAProxy 是法国开发者威利塔罗 (Willy Tarreau) 在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则…

c#递归函数

在 C#中,递归函数是指在函数内部直接或间接调用自身的函数。递归函数在解决一些问题时非常有用,例如遍历树形结构、递归计算等。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks…

【Qt】不透明指针(Opaque Pointer)在Qt源码中的应用

目录 什么是不透明指针(Opaque Pointer)不透明指针在Qt代码中的应用Qt中与不透明指针相关的一些宏 什么是不透明指针(Opaque Pointer) GeeksforGeeks中给的定义如下: An opaque pointer is a pointer that points to …

Vue的HTML插入——v-html指令

有时我们希望将数据作为HTML代码插入到HTML模板中&#xff0c;而不是以纯文本的形式显示。在这种情况下&#xff0c;我们需要使用Vue.js的v-html指令&#xff1a; <template><div><p>纯文本: {{ rawText }}</p><p>属性: <span v-html"r…

【理解】STM32一键下载电路

1.MCUISP 串口软件一键下载设置&#xff1a; DTR 低电平复位&#xff0c;RTS 高电平进入boot load 串口下载 在ch340 芯片对应DTR 和RTS 输出电平与电脑软件设置的电平相反。 一键下载电路根据ch340 芯片对应引脚的控制信号完成对应功能 具体实现过程如下&#xff1a; 2.单…

spring boot 使用 webservice

spring boot 使用 webservice 使用 java 自带的 jax-ws 依赖 如果是jdk1.8,不需要引入任何依赖&#xff0c;如果大于1.8 <dependency><groupId>javax.jws</groupId><artifactId>javax.jws-api</artifactId><version>1.1</version&g…