马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这里我们用HmacSHA256来举行加密举例:
步骤:
1.先获取请求参数并对请求参数举行处理(处理成String类型)
- //处理请求参数的两种方法:
- //方法一:
- //获取请求
- Arguments args = sampler.getArguments();
- //转化为String字符串,因直接用args.toString()转结果后前面带了“=”号,后面带有“()”,所以要用replace()先把把括号去掉
- String data = args.toString().replace("(", "").replace(")", "");
- //因为获取到的字符串是从“=”号开始的,所以用substring(1)方法表示从第二个字符开始获取
- String body = data.substring(1);
- //方法二:
- //获取请求参数
- Arguments args = sampler.getArguments();
- log.info(""+args);
- //保存到Map数组里面
- Map reqMap = args.getArgumentsAsMap();
- String body = "";
- //循环key
- for (String key : reqMap.keySet()) {
- //获取key对应的值
- body = reqMap.get(key);
- log.info("------------------"+body);
- }
复制代码 2.对数据举行加密————两种方法
1).直接在Beashell中举行加密
- //获取密钥
- String certkey = "******"; //这个是公司自己的密钥
- //创建实例
- Mac hmacSHA256 = Mac.getInstance("HmacSHA256");
- SecretKeySpec secertKey = new SecretKeySpec(certkey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
- hmacSHA256.init(secertKey);
- //计算签名
- byte[] hmacResult = hmacSHA256.doFinal(body.getBytes(StandardCharsets.UTF_8));
- String signature = new String(Base64.getEncoder().encode(hmacResult), StandardCharsets.UTF_8);
复制代码 2).在java里面编写好加密方法,导出jar包,把导出的jar包放入C:\*****\apache-jmeter-5.5\lib\ex目录下————(看增补部分)。
3.把加密后的参数生存到变量中,方面背面引用
- vars.put("check_data",signature);
复制代码 整体代码展示:
- import javax.crypto.Mac;
- import javax.crypto.spec.SecretKeySpec;
- import java.nio.charset.StandardCharsets;
- import java.util.Base64;
- import org.apache.jmeter.config.Arguments;
- //获取请求参数的两种方法:
- //方法一:
- 获取请求参数
- //Arguments args = sampler.getArguments();
- //log.info(""+args);
- 转化为String字符串,因直接用args.toString()转结果后前面带了“=”号,后面带有“()”,所以要用replace()先把把括号去掉
- //String data = args.toString().replace("(", "").replace(")", "");
- //log.info("1-------------------------"+data);
- //
- 因为获取到的字符串是从“=”号开始的,所以用substring(1)方法表示从第二个字符开始获取
- //String body = data.substring(1);
- //log.info("2----------------------------------------------"+body);
- //方法二:
- //获取请求参数
- Arguments args = sampler.getArguments();
- log.info(""+args);
- //保存到Map数组里面
- Map reqMap = args.getArgumentsAsMap();
- String body = "";
- //循环key
- for (String key : reqMap.keySet()) {
- //获取key对应的值
- body = reqMap.get(key);
- log.info("------------------"+body);
- }
- //获取密钥
- String certkey = "******************";
- 调用encodeSHA256方法
- //String encode_str = HmacSHA256.encodeSHA256(certkey,body);
- //创建实例
- Mac hmacSHA256 = Mac.getInstance("HmacSHA256");
- SecretKeySpec secertKey = new SecretKeySpec(certkey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
- hmacSHA256.init(secertKey);
- //计算签名
- byte[] hmacResult = hmacSHA256.doFinal(body.getBytes(StandardCharsets.UTF_8));
- String signature = new String(Base64.getEncoder().encode(hmacResult), StandardCharsets.UTF_8);
- vars.put("Check_data",signature);
复制代码
增补.在java里面编写好加密方法,导出jar包,把导出的jar包放入C:\*****\apache-jmeter-5.5\lib\ex目录下
1.创建一个新的Maven项目
2.编写java代码:
- package com.test.hmacSHA256;
- import com.alibaba.fastjson.JSONObject;
- import javax.crypto.Mac;
- import javax.crypto.spec.SecretKeySpec;
- import java.nio.charset.StandardCharsets;
- import java.security.InvalidKeyException;
- import java.security.NoSuchAlgorithmException;
- import java.util.Base64;
- public class HmacSHA256 {
- public static String encodeSHA256(String cerKey, String data) throws NoSuchAlgorithmException, InvalidKeyException {
- //创建实例
- Mac hmacSHA256 = Mac.getInstance("HmacSHA256");
- SecretKeySpec secertKey = new SecretKeySpec(cerKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
- hmacSHA256.init(secertKey);
- //计算签名
- byte[] hmacResult = hmacSHA256.doFinal(data.getBytes(StandardCharsets.UTF_8));
- // 返回加密后的字符串
- return new String(Base64.getEncoder().encode(hmacResult), StandardCharsets.UTF_8);
- }
- }
复制代码 3.导出jar包:
先点clean,再点package,末了在target目录下出现了jar包
4.把jar包放进C:\*****\apache-jmeter-5.5\lib\ex目录下
5.Beashell 里面导入包
- import com.test.hmacSHA256.HmacSHA256; //导入类,也就是类的路径
复制代码 6.调用方法:
- //调用encodeSHA256方法
- String encode_str = HmacSHA256.encodeSHA256(certkey,body);
复制代码 7.Beashell 整体代码展示
- import org.apache.jmeter.config.Arguments;import com.test.hmacSHA256.HmacSHA256; //导入类,也就是类的路径
- //获取请求参数的两种方法://方法一:获取请求参数//Arguments args = sampler.getArguments();//log.info(""+args);转化为String字符串,因直接用args.toString()转效果后前面带了“=”号,背面带有“()”,所以要用replace()先把把括号去掉//String data = args.toString().replace("(", "").replace(")", "");//log.info("1-------------------------"+data);//因为获取到的字符串是从“=”号开始的,所以用substring(1)方法表示从第二个字符开始获取//String body = data.substring(1);//log.info("2----------------------------------------------"+body);//方法二://获取请求参数Arguments args = sampler.getArguments();log.info(""+args);//生存到Map数组里面Map reqMap = args.getArgumentsAsMap();String body = "";//循环keyfor (String key : reqMap.keySet()) { //获取key对应的值 body = reqMap.get(key); log.info("------------------"+body);}//获取密钥String certkey = "********************"; //调用encodeSHA256方法
- String encode_str = HmacSHA256.encodeSHA256(certkey,body);//把加密好的字符串添加到check_data变量中,背面必要用就直接用${x-checkSum}举行引用vars.put("check_data",encode_str);
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |