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

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

**第二步:找开发拿到算法和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. docker 推送镜像到harbor

    服务器A的镜像要推送到已安装harbor的服务器B 1.修改服务器A的/etc/docker/daemon.json文件 其中,http://211.131.241.221:8888为你要推送的服务器 ...

  2. Mixed spaces and tabs

    ykit打包过程中报错信息如下: 报错原因: Mixed spaces and tabs(混合空格和制表符). 大多数代码约定要求使用空格或 tab 进行缩进,因此,一行代码若同时混有 tab缩进和空 ...

  3. NetCat 工具的常用使用技巧

    netcat 黑客们的瑞士军刀,虽然小巧但是其功能一点也不弱,并且该工具天生免杀,值得你去尝试. NCwindows反弹 1:正向连接 服务器执行:nc -l -p 8888 -e cmd.exe 本 ...

  4. C/C++ 通过Socket 传输结构体

    本质上socket无法传输结构体,我们只有将结构体装换为字节数组,或者是字符串格式来传输,到了服务端在强制类型转换一下即可,下面的代码分别提供原生写法与通过boost的实现两种,直接改改,可用于收集目 ...

  5. Linux系统的一些实用操作 [补档-2023-07-30]

    Linux的实用操作 4-1.常用快捷键 强制停止:当某些程序运行时,或者命令输入错误时,可以通过 ctrl + c 来强制结束当前的操作. 退出或登出:当我们要退出某些用户时,或者要退出某些特殊的页 ...

  6. Qt信号槽原理

    1.说明 使用Qt已经好几年了,一直以为自己懂Qt,熟悉Qt,使用起来很是熟练,无论什么项目,都喜欢用Qt编写.但真正去看Qt的源码,去理解Qt的思想也就近两年的事. 本次就着重介绍一下Qt的核心功能 ...

  7. 一图看懂iPhone 15系列:15/Plus/Pro/Pro Max有啥区别?详细配置对比

    距离iPhone 15系列发布只剩下2天(北京时间9月13日凌晨1点),即将推出预计分别是iPhone 15.iPhone 15 Plus,以及Pro系列的iPhone 15 Pro以及iPhone ...

  8. Hbase简单介绍

    一.背景介绍 我们生活在一个互联网的时代,这个时代的特点是,无论任何事情,只要我们想知道,都可以通过互联网迅速的检索到问题的答案,并且答案是有用的,并非常切合我们的需要. 因此,很多公司都开始致力于提 ...

  9. [FATAL] [DBT-06103] 端口 (1,521) 已在使用

    今天参考之前文章 Oracle 19c快速安装部署 在一个新的环境进行安装时,发现配置数据库时报错1521端口被占用: [root@OEL7 media]# /etc/init.d/oracledb_ ...

  10. .NET 大数据实时计算--学习笔记

    摘要 纯 .Net 自研大数据实时计算平台,在中通快递服务数百亿包裹,处理数据万亿计!将分享大数据如何落地以及设计思路,技术重难点. 目录 背景介绍 计算平台架构 项目实战 背景介绍 计算平台架构 分 ...