1. 程式人生 > >Jmeter測試簽名介面獲得sign串

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