一 首先我们要搞清楚接口签名步骤:

**第一步:初步实现接口**

**第二步:找开发拿到算法和key**

* key:sAHDRNJg0ZevmEn7HwBfbw==
* 算法:HmacMD5 咱们就找一个https://www.wenjiangs.com/doc/85uwistv
* 在JMeter当中,需要引入第三方的包才能支持HmacMD5

**第三步:问开发生成sign的逻辑**

* 对请求数据排序和去重

  Map sortMap = new TreeMap(); // 使用TreeMap排序
  sortMap.putAll(map); // TreeMap默认升序排序

* 拼接成字符串

  StringBuilder sb = new StringBuilder();
  for (Map.Entry entry : sortMap.entrySet()){
  sb.append("&").append(entry.getKey()).append("=").append(entry.getValue());
  }

* 加密

* 以sign形式放入请求数据(请求体/请求头/URL)

* 其他知识
  字符串json转json对象
  Map map = JSON.parseObject(body);
  切割字符串
  "sss".substring(1)

二核心代码:

```
import cn.hutool.crypto.digest.HMac;
import com.alibaba.fastjson.JSON;
import java.util.Map;
import org.apache.jmeter.config.Arguments;
// 获取响应数据
Arguments args = sampler.getArguments();
String body = args.getArgument(0).getValue();
log.info("==========body==========:" + body);
// 把响应数据解析成JSON对象
Map map = JSON.parseObject(body);
// 排序
Map sortMap = new TreeMap(); // 使用TrueeMap排序
sortMap.putAll(map); // TreeMap默认升序排序
// 拼接字符串
StringBuilder sb = new StringBuilder();
for (Map.Entry entry : sortMap.entrySet()){
    sb.append("&").append(entry.getKey()).append("=").append(entry.getValue());
}
log.info("============sb====: "+ sb.substring(1));
// sign签名
byte[] key = "sAHDRNJg0ZevmEn7HwBfbw==".getBytes();
HMac mac = new HMac("HmacMD5", key);
String sign = mac.digestHex(sb.substring(1));
log.info("-------------------sign-------: " + sign);
// 把sign保存到JMeter变量
vars.put("sign", sign)
```

三 实践效果:

BeanShell 如何加密加签?的更多相关文章

  1. ruby的加密方法整理(des rsa加密 加签)

    # coding:utf-8require 'openssl'require 'base64'#des加密并且base64编码def des_encrypt des_key, des_text des ...

  2. 记一次Java加密加签算法到php的坑

    此文为本人原创首发于 http://www.35coder.com/convert_encryption_codes_to_php/. 写代码的经历中,总少不了与外部的程序对接,一旦有这样的事,往往周 ...

  3. RSA加密解密及RSA加签验签

    RSA安全性应用场景说明 在刚接触RSA的时候,会混淆RSA加密解密和RSA加签验签的概念.简单来说加密解密是公钥加密私钥解密,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解 ...

  4. RSA加密及加签

    1.对方要求我们的私钥是pkcs8格式,但是实际的公钥没有用pkcs8转换之后的私钥完成,所以是可以不是pkcs8的格式的.我们加签跟格式没有关系. 2.数据格式很重要,to_mpint而非crypt ...

  5. 微信支付 V3 RSA 加签踩坑

    最近在做微信支付,根据微信官方文档上的要求 用RSA加签去请求支付窗口的调起,下面详细列举支付开发过程: 当前项目的流程大概是,前端根据后端要求提交数据------->拿到后台返回的prepay ...

  6. RSA加密解密与加签验签

    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年7月首次在美国公布 ...

  7. 手摸手带你认识https涉及的知识,并实现https加密解密,加签解签

    目录 http访问流程 https访问流程 证书 加密/解密 加签/验签 Java实现https 拓展 @ 看完整的代码,直接去完整代码实现,看实现完后会遇到的坑,直接去测试过程中的问题,包括经过代理 ...

  8. 微信小程序(17)-- RSA加密 解密 加签 验签

    RSA加密 解密 加签 验签 /** * 注:区分RSA私钥的类型,有pkcs1和pkcs8.pkcs8格式的私钥主要用于Java中 pkcs1格式: -----BEGIN RSA PRIVATE K ...

  9. iOS下使用SHA1WithRSA算法加签源码

    首先了解一下几个相关概念,以方便后面遇到的问题的解决: RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数 ...

  10. Java实现RSA密钥对并在加解密、加签验签中应用的实例

    一.项目结构 二.代码具体实现 1.密钥对生成的两种方式:一种生成公钥私文件,一种生成公钥私串 KeyPairGenUtil.java package com.wangjinxiang.genkey. ...

随机推荐

  1. Linux慢 进程kswapd0与events/0消耗大量CPU的问题 一次网站宕机的处理

    今天下午网站宕了两次机,发工单给阿里云,发现原因是服务器的CPU 100%了. 重启服务器后,使用 top 命令看看是哪些进程消耗那么大的 CPU 使用.盯了有好十几分钟,主要消耗 CPU 的进程有两 ...

  2. 【三】多智能体强化学习(MARL)近年研究概览 {Analysis of emergent behaviors(行为分析)_、Learning communication(通信学习)}

    相关文章: [一]最新多智能体强化学习方法[总结] [二]最新多智能体强化学习文章如何查阅{顶会:AAAI. ICML } [三]多智能体强化学习(MARL)近年研究概览 {Analysis of e ...

  3. C#9中使用静态匿名函数

    匿名函数是很早以前在C#编程语言中引入的.尽管匿名功能有很多好处,但它们并不便宜.避免不必要的分配很重要,这就是为什么在C#9中引入静态匿名函数的原因.在C#9中,lambda或匿名方法可以具有静态修 ...

  4. 【算法】C语言程序编程模拟实现strlen函数和strcpy函数

    C语言程序编程模拟实现strlen函数和strcpy函数(超详细的注释和解释) 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说 ...

  5. CF1764H Doremy's Paint 2 题解

    题目链接:CF 或者 洛谷 高分题,感觉挺有意思的题,值得一提的是这个题的 \(1\) 和 \(3\) 版本却是两个基础题. 一开始以为跟这道差不多:P8512 [Ynoi Easy Round 20 ...

  6. CF1886

    A 分类讨论. B 二分. C 题意:给定一个字符串 \(s\).记 \(s_i\) 为将 \(s\) 删去 \(i\) 个字符,使得剩余字符串字典序最小得到的字符串.令 \(S=s_0+s_1+\d ...

  7. 多层PCB的制造工艺流程

    多层PCB的制造工艺流程 多层板制造方法有电镀通孔法以及高密度增层法两种,都是通过不同工艺的组合来实现电路板结构.其中目前采用最多的是电镀通孔法,电镀通孔法经过超过半个世纪的发展与完善,电镀通孔法无论 ...

  8. springboot中前端ajax如何给controller提交数组参数?

    说明 我有个需求,前端批量添加一堆商品明细.也就是说会有一个商品ID,然后一堆商品明细,多行. 如此一来,针对后端接口肯定是要以数组或列表方式接收这个商品明细数组了. 前端代码 关键地方在于以form ...

  9. Java集合框架学习(十一) Hashtable详解

    Hashtable介绍 1. 继承自Dictionary; 2. 线程安全: 3. 支持Iterator和Enumeration: 4. key和value都不可为null; 5. 一般用于多线程环境 ...

  10. Spring源码阅读系列--全局目录

    阅读之前要注意的东西:本文就是主打流水账式的源码阅读,主导的是一个参考,主要内容需要看官自己去源码中验证.全系列文章基于 spring 源码 5.x 版本. 写在开始前的话: 阅读spring 源码实 ...