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.查看結果

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM