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=

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

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

相关推荐

  1. Jmeter开发Demo

    2024-03-15 14:14:02       29 阅读
  2. Jmeter函数开发说明

    2024-03-15 14:14:02       30 阅读
  3. .NET RSA加密算法实现

    2024-03-15 14:14:02       40 阅读
  4. Oracle如何实现rsa加密和例子

    2024-03-15 14:14:02       30 阅读
  5. Oracle怎么实现RSA加密解密

    2024-03-15 14:14:02       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 14:14:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 14:14:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 14:14:02       87 阅读
  4. Python语言-面向对象

    2024-03-15 14:14:02       96 阅读

热门阅读

  1. CatBoost高级教程:深度集成与迁移学习

    2024-03-15 14:14:02       48 阅读
  2. 通透!从头到脚讲明白线程锁

    2024-03-15 14:14:02       33 阅读
  3. points_foerstner

    2024-03-15 14:14:02       42 阅读
  4. python中列表常用函数

    2024-03-15 14:14:02       44 阅读
  5. C:数据结构王道

    2024-03-15 14:14:02       47 阅读
  6. Spring MVC LocaleResolver原理解析

    2024-03-15 14:14:02       41 阅读
  7. css动画和js动画的区别?

    2024-03-15 14:14:02       44 阅读
  8. 企业Centos7.9系统重装初步优化文档

    2024-03-15 14:14:02       40 阅读
  9. Linux iptables 防火墙设置

    2024-03-15 14:14:02       40 阅读
  10. 【数据结构】Map和Set

    2024-03-15 14:14:02       45 阅读
  11. 手写一个线程池

    2024-03-15 14:14:02       44 阅读
  12. selinux

    selinux

    2024-03-15 14:14:02      37 阅读
  13. vue和js常识

    2024-03-15 14:14:02       38 阅读