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