Jmeter测试签名接口获得sign串

参数签名可以保证开发的者的信息被冒用后,信息不会被泄露和受损。原因在于接入者和提供者都会对每一次的接口访问进行签名和验证。

签名sign的方式是目前比较常用的方式。

举例(根据项目具体情况而定,这里只是一个例子,参数排列和内容由项目框架决定,自行同开发沟通):

第1步:接入者把需求访问的接口的所有必要的参数信息(注意是所有参数),除去sign本身,以及值是空的参数,按参数名字母顺序排序。拼接成字符串

第2步: 然后把排序后的参数按参数1值1参数2值2…参数n值n(这里的参数和值必须是传输参数的原始值,不能是经过处理的,的方式拼接成一个字符串。

第3步: 把分配给接入方的验证密钥key(或者是提供者提供的一个SECRET_KEY,这个SECRET_KEY只有接入者和提供者知道)拼接在第2步得到的字符串前面。

第4步:对加入密匙key的字符串进行加密或是摘要(用MD5或是SHA1摘要的比较多)

第5步:对MD5的摘要结果转成大写然后写成字符串,传给参数sign


MD5摘要

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等


解决步骤:

一、在eclipse中写好加密代码

加密代码:

package openapiTest;


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class Openapi2sign {
//创建一个类LMFMD5
    public String MD5(String sourceStr) {
        String result = "";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
         // 生成一个MD5加密计算摘要
            md.update(sourceStr.getBytes());
         // 使用指定的byte数组更新摘要
            byte b[] = md.digest();
         // 把密文转换成十六进制的字符串形式
            int i;
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }
            result = buf.toString();
            System.out.println("MD5(" + sourceStr + ",32) = " + result);
            //System.out.println("MD5(" + sourceStr + ",16) = " + buf.toString().substring(8, 24));
            // 注释的是md5的16位取值
        } catch (NoSuchAlgorithmException e) {
            System.out.println(e);
        }
        return result;
    }
}

 

测试代码

package openapiTest;


import openapiTest.Openapi2sign;


public class Test {

public static void main(String[] args){

//公共部分
String str1 = "a";
String str2 = "b";
String str3 = "c";


//结果字符串
String strresult = "";

String[] array1 = {str1 ,str2,str3};
for (int i = 0; i <array1.length; i++){
strresult = strresult + (array1[i]);
}

String result = new Openapi2sign().MD5(strresult);
   System.out.println(result );

}


二、将代码导出为jar包(导出步骤略,可自行百度)


三、把MD5摘要算法的jar包放入jmeter的lib\ext目录里面里面


四、在jmeter中用beanshell去调用

1、jmeter导入jar包


2、beanshell调用


3、查看加密后的sign串结果



OK,大工告成

参考文章:https://www.jianshu.com/p/240e929323a6



评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值