最近刚好在弄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加密解密(加密篇)的更多相关文章

  1. AES加密解密 加密解密使用

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Sec ...

  2. web.config中连接字符串的读写和加密解密

    转载:https://www.cnblogs.com/shuai/articles/2248703.html 1.先来看看如何在web.config中写入数据库连接字符串.打开web.config文件 ...

  3. 支付接口中常用的加密解密以及验签rsa,md5,sha

    一.常用加密类型分类 1.对称加密:采用单钥对信息进行加密和解密,即同一个秘钥既可以对信息进行加密,也可以进行解密.此类型称之为对称加密.特点速度快,常用于对大量数据信息或文件加密时使用.常用例子:D ...

  4. C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServic

    C#在using System.Security.Cryptography下有 DESCryptoServiceProvider RSACryptoServiceProvider DESCryptoS ...

  5. RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密

    原文:RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 C#在using System.Security.Cryptograph ...

  6. Hash算法——加密解密说明

    MD5 pmd5-md5加密解密 加密类型识别工具 hash-identifier

  7. .NET进阶篇04-Serialize序列化、加密解密

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂这篇很轻松,没有什么费脑子的,所以解析较少,代码较多,为数不多的拿来即用篇整个章节分布请移步 内容目录 一.概述二.序列化1.二进制文件2.XML ...

  8. loadrunder之脚本篇——加密解密

    密码加密 可以给密码加密,意在把结果字符串作为脚本的参数或者参数值.例如,完整可能有一个用户密码填写的表单,你想测试网站针对不同密码的反应,但是你又想保护密码的安全.Password Encoder允 ...

  9. PHP AES的加密解密

    AES加密算法 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

随机推荐

  1. Python成员运算,身份运算和流程控制

    成员运算 in #判断--在--里面 print('a' in 'abcd') # 字符串判断a是否在abcd里面 print('you' in 'how are you') # 这种整体也可以判断 ...

  2. 一文搞懂Java/Spring/Dubbo框架中的SPI机制

    几天前和一位前辈聊起了Spring技术,大佬突然说了SPI,作为一个熟练使用Spring的民工,心中一紧,咱也不敢说不懂,而是在聊完之后赶紧打开了浏览器,开始的学习之路,所以也就有了这篇文章.废话不多 ...

  3. 【Tools】SSHUsage

    SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制.还能对操作者进行认证(authentication)和授权(authorization ...

  4. VMware上安装的Ubuntu不显示全屏解决方法

    花费了好一会才把电脑上的Vmware装上,把Ubuntu装到虚拟机上,谁知道Ubuntu不显示全屏,我调了分辨率,奈何Ubuntu里面固定的分辨率没有跟我电脑匹配的,然后开始寻找解决方法,在网上找了很 ...

  5. 【转】互联网项目中mysql应该选什么事务隔离级别

    作者:孤独烟 转自:https://www.cnblogs.com/rjzheng/p/10510174.html 摘要 企业千万家,靠谱没几家.社招选错家,亲人两行泪. 祝大家金三银四跳槽顺利! 引 ...

  6. 七:使用Session进行会话管理

    一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...

  7. 轻松入门vue系列

    一.vue基础语法 二.vue组件化开发 三.Vue前后端交互 四.vue前端路由 喜欢不要忘了点个赞哟

  8. Object 的wait()方法

    The java.lang.Object.wait() causes current thread to wait until another thread invokes the notify() ...

  9. 网络流量预测入门(三)之LSTM预测网络流量

    目录 网络流量预测入门(三)之LSTM预测网络流量 数据集介绍 预测流程 数据集准备 SVR预测 LSTM 预测 优化点 网络流量预测入门(三)之LSTM预测网络流量 在上篇博客LSTM机器学习生成音 ...

  10. servlet+Ajax开发web工程

    前言 因为目前基本已经不会再用到servlet+jsp开发项目了,基本都是使用框架来开发:我们常用的框架都是基于servlet来封装的,该阶段只需要了解一下tomcat如何使用,servlet的生命周 ...