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

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

**第二步:找开发拿到算法和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. SQL 训练题目

    title: SQL 训练题目 date: 2023-7-15 01:45:50 tags: - SQL 训练 一. 查询 "01" 课程比 "02" 课程成绩 ...

  2. Linux-CentOS7 SSH免登陆

    配置三台服务器,如下: 生成密钥 在三台机器(node1\node2\node3)执行以下命令,生成公钥与私钥. ssh-keygen -t rsa 执行该命令之后,按下三个回车即可,然后敲(三个回车 ...

  3. git操作 手写稿

  4. iOS安装包瘦身总结

    前段时间APP要做资源压缩,需要把项目中使用的所有图片资源进行压缩,以减小APP安装包体积.想着既然压缩APP资源是为了缩小APP体积,那么来一遍APP整体瘦身流程并做一下总结吧. 整个过程分三步: ...

  5. CH59X/CH58X/CH57X 片上flash的使用

    以CH592F为例:在使用时先看手册对code和data区的划分 一.DataFlash的读写的操作 先看几个操作dataflash的API(读擦写): /** * @brief read Data- ...

  6. ”动态“修改MAC地址

    一:获取MAC地址 1.自定义的MAC地址 这里是例程中存放自定义MAC地址的位置,如果想修改MAC地址可以在此处修改.一般例程这里是灰色的需要在工程预编译处配置. 可以看到MCU.c文件中此处代码生 ...

  7. 《ASP.NET Core 微服务实战》-- 读书笔记(第9章)

    第 9 章 微服务系统的配置 微服务系统中的配置需要关注更多其他方面的因素,包括: 配置值的安全读写 值变更的审计能力 配置信息源本身的韧性和可靠性 少量的环境变量难以承载大型.复杂的配置信息 应用要 ...

  8. [JVM]逃逸分析

    逃逸分析 JVM的内存分配策略 首先回顾一下JVM的内存分配策略. JVM的内存包括方法区.堆.虚拟机栈.本地方法栈.程序计数器.一般情况下JVM运行时的数据都是存在栈和堆上的.栈用来存放一些基本变量 ...

  9. NEMU PA 3-1 实验报告

    一.实验目的 在前面的PA1中,我们实现了CPU和FPU,在PA2中我们实现了对指令的解码和对ELF的装载,以及进一步完善了CLI调试器.那么在整个PA3中,我们将要着力于内存的相关处理,如Cache ...

  10. Kubernetes上使用Ingress Nginx将服务发布到外部IP

    Kubernetes的网络结构 K8s的网络相对比较复杂, 包含了如下几类IP地址: Host Network 运行K8s集群的宿主服务器的内网IP, 其网段在配置宿主机时设置. 这些服务器可能是物理 ...