jmeter加密解密(加密篇)
最近刚好在弄jmeter加密解密,可以分享下。(有一段时间没写了,有点不知道从何写起,这篇写的有点乱o(╥﹏╥)o)
需求是:接口中的请求体的部分参数需要先加密再请求,返回的结果中部分字段需解密。
1、首先,先按照正常的请求弄好。

2、然后,将开发提供给测试的加密解密的jar包添加到测试计划。当然,也可以直接将这些jar包放到jmeter安装目录jmeter\apache-jmeter-5.1.1\lib\ext中,这样就不用添加到测试计划中。(jar包有时候提供不齐全,如何确认自己的jar包是齐全的,下面会讲解) 
3、然后,在请求下新建Beanshell预处理程序,像我们添加的这些jar包,Beanshell预处理程序也需要导入,这里的导入用import就行。(因为jar包里都是class文件,其实是看不到实际代码的,如何想看加密解密对应的方法,可以跟开发要这个加密解密类(RSAUtils)的java文件)
Beanshell与java编码是一样的逻辑,只是有些类型格式不同。
4、然后,下面就可以编写代码了。按照RSAUtils.java文件,加密有2种,私钥加密和公钥加密,对应的解密分别为私钥解密和公钥解密。这里只用一个讲解,用的例子是公钥加密和公钥解密。
公钥加密的方法是publicEncrypt(data, publicKey),也就是说我们需要设置2个变量:data和publicKey。其中data是json格式的。
先按照最简单的思路写,为了保证beanshell预处理程序里的代码是可以正常使用,先写死data和publicKey公钥的数值。(这里需要注意的一点是json在jmeter的beanshell中需要转义,不然会报错)
如果json不转义,会报错。比如:
String data = "{"a":"2","b":"3"}";
System.out.println("json:"+data);//打印
日志报错信息:
2020-04-10 14:11:43,543 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``import xxx
(如果json数值里本身有部分是有转义符的,则需要二次转义) 
5、从RSAUtils.java文件中可以看到加密的方式publicEncrypt(data, publicKey),那我想拿到加密结果,那么也就是RSAUtils.publicEncrypt(data, publicKey)。那么beanshell预处理程序的加密代码就写好了:
打印出结果,这里看到已经加密成功了。 
6、我们需要怎么将加密后的数值给到请求体中呢?如果直接使用beanshell预处理定义的加密结果encryptMsg变量,执行:

那么我们就需要定义一个全局变量,设置在测试计划中,我这里设置为sas,beanshell也需要加一行代码:vars.put("sas",encryptMsg);//将加密后的值赋值给全局变量



执行,看下结果:可以看到请求体已经拿到加密后的数值了。 
到这里,加密就完成了。
如何判断jar包是否齐全:
这里我先注释掉一部分导入jar包和类,执行以下,会发现提示没找到JSONObject类和RSAUtils.publicEncrypt方法。因为一直提示这个,但又不知道是缺少了哪些jar包。一次偶然下,加了try{}catch(){},发现会提示具体少了哪些类,就可以让开发提供对应的jar包啦~
加了try{}catch(){}后,执行,发现会提示具体少了哪些jar包: 

发现缺少com/baomidou/mybatisplus/toolkit/IOUtils,让开发导出对应的jar包,假设这个jar包名称:mybatisplussup,那么我们需要在测试计划中添加这个jar包,且beanshell预处理程序中,需要加2行代码:import mybatisplussupport.*;
import com.baomidou.mybatisplus.toolkit.IOUtils;
总结:日志是显示语法错误,比如未定义变量;但要看编译错误,用try{}catch(){}查看问题更加直观。
jmeter加密解密(加密篇)的更多相关文章
- AES加密解密 加密解密使用
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Sec ...
- web.config中连接字符串的读写和加密解密
转载:https://www.cnblogs.com/shuai/articles/2248703.html 1.先来看看如何在web.config中写入数据库连接字符串.打开web.config文件 ...
- 支付接口中常用的加密解密以及验签rsa,md5,sha
一.常用加密类型分类 1.对称加密:采用单钥对信息进行加密和解密,即同一个秘钥既可以对信息进行加密,也可以进行解密.此类型称之为对称加密.特点速度快,常用于对大量数据信息或文件加密时使用.常用例子:D ...
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServic
C#在using System.Security.Cryptography下有 DESCryptoServiceProvider RSACryptoServiceProvider DESCryptoS ...
- RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
原文:RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 C#在using System.Security.Cryptograph ...
- Hash算法——加密解密说明
MD5 pmd5-md5加密解密 加密类型识别工具 hash-identifier
- .NET进阶篇04-Serialize序列化、加密解密
知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂这篇很轻松,没有什么费脑子的,所以解析较少,代码较多,为数不多的拿来即用篇整个章节分布请移步 内容目录 一.概述二.序列化1.二进制文件2.XML ...
- loadrunder之脚本篇——加密解密
密码加密 可以给密码加密,意在把结果字符串作为脚本的参数或者参数值.例如,完整可能有一个用户密码填写的表单,你想测试网站针对不同密码的反应,但是你又想保护密码的安全.Password Encoder允 ...
- PHP AES的加密解密
AES加密算法 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...
随机推荐
- Python成员运算,身份运算和流程控制
成员运算 in #判断--在--里面 print('a' in 'abcd') # 字符串判断a是否在abcd里面 print('you' in 'how are you') # 这种整体也可以判断 ...
- 一文搞懂Java/Spring/Dubbo框架中的SPI机制
几天前和一位前辈聊起了Spring技术,大佬突然说了SPI,作为一个熟练使用Spring的民工,心中一紧,咱也不敢说不懂,而是在聊完之后赶紧打开了浏览器,开始的学习之路,所以也就有了这篇文章.废话不多 ...
- 【Tools】SSHUsage
SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制.还能对操作者进行认证(authentication)和授权(authorization ...
- VMware上安装的Ubuntu不显示全屏解决方法
花费了好一会才把电脑上的Vmware装上,把Ubuntu装到虚拟机上,谁知道Ubuntu不显示全屏,我调了分辨率,奈何Ubuntu里面固定的分辨率没有跟我电脑匹配的,然后开始寻找解决方法,在网上找了很 ...
- 【转】互联网项目中mysql应该选什么事务隔离级别
作者:孤独烟 转自:https://www.cnblogs.com/rjzheng/p/10510174.html 摘要 企业千万家,靠谱没几家.社招选错家,亲人两行泪. 祝大家金三银四跳槽顺利! 引 ...
- 七:使用Session进行会话管理
一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...
- 轻松入门vue系列
一.vue基础语法 二.vue组件化开发 三.Vue前后端交互 四.vue前端路由 喜欢不要忘了点个赞哟
- Object 的wait()方法
The java.lang.Object.wait() causes current thread to wait until another thread invokes the notify() ...
- 网络流量预测入门(三)之LSTM预测网络流量
目录 网络流量预测入门(三)之LSTM预测网络流量 数据集介绍 预测流程 数据集准备 SVR预测 LSTM 预测 优化点 网络流量预测入门(三)之LSTM预测网络流量 在上篇博客LSTM机器学习生成音 ...
- servlet+Ajax开发web工程
前言 因为目前基本已经不会再用到servlet+jsp开发项目了,基本都是使用框架来开发:我们常用的框架都是基于servlet来封装的,该阶段只需要了解一下tomcat如何使用,servlet的生命周 ...