jmeter利用bean shell加密解密方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter利用bean shell加密解密方法相关的知识,希望对你有一定的参考价值。

 

 

加密解密方法(我用的是RSA加密解密)只需加密解密的看前5步就可以了

1.先找开发拿到代码或者直接叫开发打jar包,直接拿包的话可以跳过前2步

 

 

2.导出jar包

 

 

3.将jar包放入jmeter的lib\\ext文件夹里面

 

 4.设置线程组(要设置全局变量的话线程组选setUp Thread Group),设置http请求,添加前置处理器BeanShell PreProcessor和后置处理器BeanShell PostProcessor,然后添加一个Debug Sampler,如图:

设置http请求

 

 

添加前置处理器BeanShell PreProcessor

import RSAencryption.RSAUtil;//导入加密类(因为我模拟的是前端操作,所以加密解密方法都是用的前端的)

//加密
System.out.println("*****加密*****");//打印"加密"
String data = "{\\"apiType\\":2,\\"apkVersion\\":\\"2.6\\",\\"osType\\":1,}";//需要加密的请求参数,我这里为json格式
String encode = RSAUtil.encrypt(data);//调用工具类中的方法对参数进行加密,加密后的值是encode,encode可以自定义
String sign = RSAUtil.sign(data);//sign是对data的签名(没有的话可以不用写)

vars.put("encode",encode);//把值保存到jmeter变量encode中
vars.put("sign",sign);//把值保存到jmeter变量sign中
String getEncode=vars.get("encode");//获取encode的值
System.out.println("Get my encode: " + getEncode);//打印"Get my encode"

  

添加后置处理器BeanShell PostProcessor

import RSAencryption.RSAUtil;//导入解密类(因为模拟的是前端操作,所以加密解密方法都是用的前端的)
import org.json.*;//导入json数据解析包,一般需要到网上下载的(百度文件名org.json.jar,这个jar包同样是放在jmeter的lib\\ext文件夹内)

//解密
System.out.println("*****解密*****");//打印"解密"
String json = prev.getResponseDataAsString();//获取响应数据
JSONObject data_obj = new JSONObject(json);//把响应的数据包装成json对象
String data = data_obj.get("data").toString();//从json对象里面获取对应的值(data)
System.out.println("Get my data: " +data);//打印"Get my data"
String result = RSAUtil.decrypt(data);//解密data并获取data的值
vars.put("result",result);//把值保存到jmeter变量result中

JSONObject secResult = new JSONObject(result);//把解密后的result包装成json对象

//提取loanId,仅仅只是解密则不需要
String loanId = secResult.get("loanId").toString();//在json里面取出loanId
System.out.println("Get my loanId: " +loanId);//打印"Get my loanId"
vars.put("loanId",loanId); //将loanId显示在Debug Sampler里面

//设置全局变量
props.put("loanId",loanId); //把loanId设置成全局变量,仅仅只是解密则不需要

  

添加Debug Sampler

 

 

 

5.查看结果

 

 

6.关联

加密

import RSAencryption.RSAUtil;//导入加密类(因为我模拟的是前端操作,所以加密解密方法都是用的前端的)

//加密
System.out.println("*****加密*****");//打印"加密"

//引用全局变量
String loanIdStr = props.get("loanId");//引用之前设置的全局变量"loanId",仅加密则不需要此代码

String data = "{\\"apiType\\":2,\\"apkVersion\\":\\"2.6\\",\\"osType\\":1,\\"loanId\\":\\""+loanIdStr+"\\"}";//需要加密的参数
String encode = RSAUtil.encrypt(data);//调用工具类中的方法进行加密
String sign = RSAUtil.sign(data);//sign是对data的签名(没有的话可以不用写)

vars.put("encode",encode);//把值保存到jmeter变量encode中
vars.put("sign",sign);//把值保存到jmeter变量sign中
String getEncode=vars.get("encode");//获取encode的值
System.out.println("Get my encode: " + getEncode);//打印"Get my encode"

  

解密

import RSAencryption.RSAUtil;//导入解密类(因为模拟的是前端操作,所以加密解密方法都是用的前端的
import org.json.*;//导入json数据解析包,一般需要到网上下载的(百度文件名org.json.jar,这个jar包同样是放在jmeter的lib\\ext文件夹内)

//解密
System.out.println("*****解密*****");//打印"解密"
String json = prev.getResponseDataAsString();//获取响应数据
JSONObject data_obj = new JSONObject(json);//把响应的数据包装成json对象
String data = data_obj.get("data").toString();//从json对象里面获取对应的值(data)
System.out.println("Get my data: " +data);//打印"Get my data"
String result = RSAUtil.decrypt(data);//解密data并获取data的值
vars.put("result",result);//把值保存到jmeter变量result中

JSONObject secResult = new JSONObject(result);//把解密后的result包装成json对象

 

7.查看结果

 

 

  

 

以上是关于jmeter利用bean shell加密解密方法的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter之Bean shell使用——断言加密的响应信息

Jmeter中Bean shell脚本格式修改为utf-8

jmeter Bean Shell的使用

Jmeter之Bean shell使用-常用内置变量

Jmeter之Bean shell使用

Jmeter之Bean shell使用