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加密解密方法的主要内容,如果未能解决你的问题,请参考以下文章