Jmeter 二次开发 函数助手 AES加解密

Jmeter 二次开发 函数助手 AES加解密

  • 1. 环境准备
  • 2. 关键技术说明
    • 2.1 离线导包
    • 2.2 示例代码
  • 3. 代码包
  • 4. 结果演示

1. 环境准备

  • IDE :IntelliJ IDEA 2021.1.1 x64
  • JAVA环境 :jdk1.8.0_251
  • 离线导包:导入Jmeter安装目录下lib/ext下的ApacheJmeter_function.jar 和 ApacheJmeter_cotre

2. 关键技术说明

2.1 离线导包

重点

  • 程序依赖的jar包需要放在ext路径下
  • 程序依赖的class需要放在 ApacheJmeter_function 中,和新开发的class放在同级
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.2 示例代码

以AES CBC加密为例

package org.apache.jmeter.functions;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;public class AES_CBC_Encrypt extends AbstractFunction {//自定义function的描述private static final List<String> desc = new LinkedList<>();//function名称private static final String KEY = "__AES_CBC_Encrypt";static {desc.add("json_input");desc.add("secret_input");desc.add("iv_input");}private CompoundVariable json_input;private CompoundVariable secret_input;private CompoundVariable iv_input;// 函数的逻辑执行主体/** {@inheritDoc} */@Overridepublic String execute(SampleResult previousResult, Sampler currentSampler)throws InvalidVariableException {String bodyData = String.valueOf(json_input.execute());String secret_key = String.valueOf(secret_input.execute());String iv_key = String.valueOf(iv_input.execute());return AES_CBC.encryptCBC(bodyData, secret_key, iv_key);}// 用来接收和处理GUI界面的参数的传值/** {@inheritDoc} */@Overridepublic void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException {checkParameterCount(collection, 3);Object[] values = collection.toArray();json_input = (CompoundVariable) values[0];secret_input = (CompoundVariable) values[1];iv_input = (CompoundVariable) values[2];}// 用来定义函数的名称,把自定义的内容显示在函数对话框中/** {@inheritDoc} */@Overridepublic String getReferenceKey() {return KEY;}// 用来设置GUI界面的函数对话框,把自己定义的参数给显示在jmeter的GUI界面上/** {@inheritDoc} */@Overridepublic List<String> getArgumentDesc() {return desc;}public static void main(String[] args) {        // AES支持三种长度的密钥:128位、192位、256位。// 代码中这种就是128位的加密密钥,16字节 * 8/字节 = 128位。String srt = "123456778";String iv_seed = "1234567887654321";System.out.println("密钥key:" + srt);System.out.println("iv:" + iv_seed);System.out.println("--------AES_CBC加密解密---------");String cbcResult = AES_CBC.encryptCBC(aes, srt, iv_seed);System.out.println("aes_cbc加密结果:" + cbcResult);System.out.println();System.out.println("---------解密CBC---------");String cbcDecrypt = AES_CBC.decryptCBC(cbcResult, srt, iv_seed);System.out.println("aes解密结果:" + cbcDecrypt);System.out.println();}
}

3. 代码包

https://download.csdn.net/download/weixin_39451323/88218178

4. 结果演示

加密:
在这里插入图片描述

    ${__AES_CBC_Encrypt({"token":"0e84b297-d8f2-4779-b7f1-60966ed19ce1"},qwertyuiiuytrewq,1234567887654321)}

解密:
在这里插入图片描述

${__AES_CBC_Decrypt(RwHL3jF01WDd9T3tKRUi2XIWuPJ/a5H78mExd8I3/fArE6778r7EsbSUwjx7cncAkkfrfc6QV53NrStWBnissA==,qwertyuiiuytrewq,1234567887654321)}

参考资料:jmeter官方函数https://github.com/ufctester/apache-jmeter/tree/master/src/functions/org/apache/jmeter/functions

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现SCN随机配置网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SCN随机配置网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SCN随机配置网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本…

【算法刷题之数组篇(2)】

目录 1.leetcode-35. 搜索插入位置&#xff08;简单&#xff09;2.leetcode-74. 搜索二维矩阵&#xff08;中等&#xff09;3.leetcode-73. 矩阵置零&#xff08;中等&#xff09;4.leetcode-56. 合并区间&#xff08;中等&#xff09;5.leetcode-54. 螺旋矩阵&#xff08;中等…

Hadoop的DataNode无法启动的解决方案

Hadoop重启一次&#xff0c;里面的数据需要重新导入&#xff0c;发现无法导入数据&#xff0c;查看jps发现是DataNode没有启动&#xff0c;重新启动发现也无法启动&#xff0c;原因是前面重新启动NameNode&#xff0c;里面的文件格式化一次&#xff0c;DataNode的文件不一致&am…

没有高学历就没有高薪工作?

大家好&#xff0c;我是郑州软件测试4期的小路同学&#xff0c;是一个只有普通高中学历的河南人。由于自己上学的时候对学习不感兴趣&#xff0c;于是很早就辍学了。干过服务员&#xff0c;也卖过房子&#xff0c;但是干啥工作都没有挺过半年的&#xff0c;因为薪资很低&#x…

Appium-移动端自动测试框架,如何入门?

Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门&#xff0c;那么我们就直奔主题。文章结构如下&#xff1a; 1、为什么要使用Appium&#xff1f; 2、如何搭建Appium工具环境?(超详细&#xff09; 3、通过demo演示Appium的使用 4、Appium如何…

从零玩转系列之微信支付实战PC端装修我的订单页面 | 技术创作特训营第一期

一、前言 欢迎来到本期的博客&#xff01;本篇文章是 PC 端的结尾了,前面经历过九个章节到本章节刚刚好十章节感谢观看我的文章,那么接下来我们将要编写的是我的订单页面. GGBOM! 本篇完毕后将是 UniApp 的篇章感受移动端的诱惑 &#x1f497; 本次为前端知识点如果不懂前段可以…

【HarmonyOS】codelab在hvigor版本2.4.2上无法运行问题

【关键字】 HarmonyOS、codelab、hvigor 【问题描述】 有cp反馈集成鸿蒙codelab报错。 下载音乐专辑示例文件&#xff08;一次开发&#xff0c;多端部署-音乐专辑&#xff08;ArkTS&#xff09; (huawei.com)&#xff09;后构建项目&#xff0c;显示找不到2.5.0的hvigor。 …

数字孪生助力智慧水务:科技创新赋能水资源保护

智慧水务中&#xff0c;数字孪生有着深远的作用&#xff0c;正引领着水资源管理和环境保护的创新变革。随着城市化和工业化的不断推进&#xff0c;水资源的可持续利用和管理愈发显得重要&#xff0c;而数字孪生技术为解决这一挑战提供了独特的解决方案。 数字孪生技术&#xf…

了解AI智能问答的流程之后!使用起来更简单了

AI智能问答流程主要是按照自然语言理解、对话管理、自然语言生成这3个步骤&#xff0c;通过这些步骤之后&#xff0c;就可以将语言进行转换&#xff0c;转换成计算机能够理解的意思&#xff0c;再根据当前对话管理判断应该采取的策略。接下来looklook会详细来讲讲具体是如何实现…

【【萌新的STM32学习-11】】

萌新的STM32学习-11 终于进入了正点原子的入门篇进行一些简单的设计 GPIO General Purpose Input Output 通用输入输出端口 简称GPIO 作用 &#xff1a;负责采集外部器件的信息或者控制外部器件工作&#xff0c;即输入输出 GPIO 的特点 1&#xff0c;不同型号&#xff0c;IO数…

高效多用的群集-Haproxy搭建Web集群

Haproxy搭建 Web 群集 一、Haproxy前言 HAProxy是一个使用c语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TcP和HrrP的应用程序代理。HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。…

Linux系统下检验Tensorflow 2.xx版本和1.xx版本是否安装成功

目录 版本问题Tensorflow 1.xx的测试代码&#xff1a;Tensorflow 2.xx的测试代码&#xff1a;Tensorflow 2.6版本实际的测验结果 总结 版本问题 查询资料发现&#xff0c;多数检验Tensorflow是否安装成功的方法&#xff0c;多数方法都是1.xx版本的&#xff0c;直接使用1.xx版本…