前言:最近,我遇到一些测试接口必须传入经过SHA512加密后的sign签名,并且签名有1小时时间限制,即签名不是一成不变超1小时就会过期,这导致在测试过程中就得频繁手工去更新签名。其实Jmeter是有提供函数去进行自动转换的,以下详解

SHA512加密,可以去网上搜索SHA512在线转换

1、已知,接口请求必须传入4个参数tenantCode、timestamp、nonce、sign

{
"tenantCode":"",
"timestamp":"",
"nonce":"",
"sign":""
}

其中sign是经过SHA512加密的签名,计算规则如下【其中appSecret=573e182924f8d40fd4566989ace22729e8d4a1cb】:

  • 按照顺序tenantCode${tenantCode}nonce${nonce}timestamp${timestamp}${appSecret}拼接成一串字符串
  • 对这串字符串进行SHA512加密
  • 对加密后的字符串转大写,就得到sign

2、例子:

{
"tenantCode":"jkdsa",
"timestamp":"1722938712",
"nonce":"3754",
"sign":"5F61CFD4AE4FD799C644659F14B81ABF510941F6EDA4C16349018E6A3872281A7794A43A3CF3E7734B7AD1E553ADA562AAA5DBA90188CF22A8781CE8BAF7C158"
}

以下是手工根据规则计算sign的过程

  • 拼接字符串为:tenantCodejkdsanonce3754timestamp1722938712573e182924f8d40fd4566989ace22729e8d4a1cb
  • 进行SHA512加密后为:tenantCodejkdsanonce3754timestamp1722938712573e182924f8d40fd4566989ace22729e8d4a1cb
  • 转大写后为:5F61CFD4AE4FD799C644659F14B81ABF510941F6EDA4C16349018E6A3872281A7794A43A3CF3E7734B7AD1E553ADA562AAA5DBA90188CF22A8781CE8BAF7C158

3、由于sign签名是有1小时时间限制的,测试接口过程中为了减少手工频繁去更新签名,我用了Jmeter的函数去自动转换,用到V函数(用于执行变量名、嵌套函数)、digest函数(用于加密)、changeCase函数(用于字符转换大小写)

{
"tenantCode":"${tenantCode}",
"timestamp":"${timestamp}",
"nonce":"${nonce}",
"sign":"${__changeCase(${__digest(SHA-512,${__V(tenantCode${tenantCode}nonce${nonce}timestamp${timestamp}${appSecret})},,,)},,)}"
}

接口请求参数

Jmeter SHA512接口加密测试的更多相关文章

  1. jmeter APP接口压力测试

    第一步:获取开发文档,了解接口地址和参数名 第二步:jmeter中添加需要测试的接口 a.设计APP的接口框架: b.http请求默认值设置如下: c.接口中应需要用到sign字段,加密字符串与时间戳 ...

  2. Apache JMeter 做接口并发测试

    获知来源:查找如何使用Postman进行接口并发测试时,在StackOverflow上看到,说postman只能做串行测试,而且postman并不是被设计做这种测试的:而jmeter就是为了测试而开发 ...

  3. 【转】用Jmeter进行接口压力测试的步骤

    1.双击jmeter.bat 2.右键点击测试规划à添加àThreadsà线程组,此时在测试规划下边显露出来线程组选项.点击该选项,显露出来线程组界面.参变量线程数表达若干个烦请,参变量Ramp-Up ...

  4. JMeter进入接口压力测试

    关键字: Jmeter.单接口.压力测试.插件监听.服务器端 摘要: 使用Jmeter对单个接口进行压力测试:监听并发量对接口响应时间.服务器资源占量.Jmeter本身只能获取到Tomcat的状态,所 ...

  5. Linxu下JMeter进行接口压力测试

    ****************************************************************************** 本文主要介绍Jmeter脚本如何在Linx ...

  6. Jmeter进行接口流程测试

    Jmeter进行简单的流程测试 此次完成的流程:添加文章-删除文章 总的如下: 一.测试计划 用户定义的变量中,我定义了3个变量: 二.HTTP cookie管理器 填写要添加的cookie 三.JD ...

  7. jmeter处理接口加密和解密

    https://www.liangzl.com/get-article-detail-39672.html https://www.cnblogs.com/artoftest/p/7277996.ht ...

  8. 【jmeter】接口稳定性测试

    1.创建进行测试的脚本 2.场景设置 线程组设置并发用户数30 在启动1s,30并发用户全部启动 循环设置为永远 采用调度器:有两种工作方式 1.设置启动和结束时间 2.设置持续时间,我设置的是60s ...

  9. Jmeter 使用实践 - 接口 diff 测试

    大多数人都使用 Jmeter 做过性能测试,但是在使用的过程中你会发现,它不仅可以做性能测试和功能测试,还能够满足基本的接口测试需求. 相比其他工具,Jmeter 入门门槛较低,安装也比较方便,根据自 ...

  10. JMeter做http接口压力测试

    测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做压力测试的时候就是混合场景,需要多个 ...

随机推荐

  1. Java代码规范及异常汇总 非空异常 NullPointerException

    Java规范及异常汇总1.java.lang.NullPointerException: nullorderReq.getId() != -1 修改为: orderReq.getId() != nul ...

  2. 《Vue3.x +TpyeScript实践指南》勘误

    图书出版已有一段时间,书中已发现错误如下: 书的第14页,倒数第3行,npm init -y命令中,init和-y之间应该有个空格: 书的第32页,代码的第1行,应该为模板字符串符号 `,我看印刷的是 ...

  3. mysql 如何分配root账号创建数据库的权限

    1.mysql 如何分配root账号创建数据库的权限 在 MySQL 中,root 用户通常具有所有的权限,包括创建数据库的权限.但是,如果我们想要为另一个用户分配创建数据库的权限,或者想要限制 ro ...

  4. FEDORA34 安装CUDA11.3

    FEDORA34 安装CUDA11.3 首先确保能装上最新的显卡驱动.  FEDORA显卡驱动安装 然后去官网下fedora对应的.run安装文件.运行安装, 但不要选装驱动. 完成后加环境变量: # ...

  5. 使用Scrcpy 在电脑显示手机画面并控制安卓设备

    使用Scrcpy 显示手机画面并控制手机 原文(有删改):https://www.iplaysoft.com/scrcpy.html 背景 本文适用于安卓开发人员,不针对普通安卓手机用户. 在安卓开发 ...

  6. 在高通Fastmmi模式中增强交互方式

    在高通Fastmmi模式中增强交互方式 背景 由于之前工厂抱怨 FCT模式不好用. 之前的FCT测试是这样子的:PCBA上夹具,连接USB. 同时,使用上位机程序(ATE)发送指令,人工判断结果以后, ...

  7. Android日志系统(logging system)

    Android日志系统(logging system) 背景 不管是做Android应用还是做Android中间层和底层,在做一些调试工作的时候,使用adb logcat非常关键.特意学习了一下安卓的 ...

  8. 基于cifar数据集合成含开集、闭集噪声的数据集

    前言 噪声标签学习下的一个任务是:训练集上存在开集噪声和闭集噪声:然后在测试集上对闭集样本进行分类. 训练集中被加入的开集样本,会被均匀得打上闭集样本的标签充当开集噪声:而闭集噪声的设置与一般的噪声标 ...

  9. 嵌入式知识分享——GDB程序调试方法说明

    前  言 本指导文档适用开发环境: Windows开发环境:Windows 7 64bit.Windows 10 64bit Linux开发环境:Ubuntu 18.04.4 64bit 虚拟机:VM ...

  10. jsp+servlet+mysql-----------批量删除

    jsp: <div class="result-wrap"> <form action="${pageContext.request.contextPa ...