Jmeter SHA512介面加密測試

dabeen發表於2024-08-06

前言:最近,我遇到一些測試介面必須傳入經過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加密後為:5f61cfd4ae4fd799c644659f14b81abf510941f6eda4c16349018e6a3872281a7794a43a3cf3e7734b7ad1e553ada562aaa5dba90188cf22a8781ce8baf7c158
  • 轉大寫後為:5F61CFD4AE4FD799C644659F14B81ABF510941F6EDA4C16349018E6A3872281A7794A43A3CF3E7734B7AD1E553ADA562AAA5DBA90188CF22A8781CE8BAF7C158

3、由於sign簽名是有1小時時間限制的,測試介面過程中為了減少手工頻繁去更新簽名,我用了Jmeter的函式去自動轉換,用到V函式digest函式changeCase函式

3.1 定義變數值

3.2 介面請求傳參 。注意sign,用到3個函式:V函式(用於執行變數名、巢狀函式)、digest函式(用於加密)、changeCase函式(用於字元轉換大小寫)

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

3.3 執行介面請求,檢視介面請求引數已自動得到sign簽名

相關文章