1. 程式人生 > >API 校驗 sign 值 按照ASCII碼從小到大排序增加MD5加密

API 校驗 sign 值 按照ASCII碼從小到大排序增加MD5加密

sign生成規則及步驟:

第一步,將所有需要傳送至服務端的請求引數(空引數值的引數、檔案、位元組流、sign除外)按照引數名ASCII碼從小到大排序(字典序);

注意:

  • 引數名ASCII碼從小到大排序(字典序);

  • 如果引數的值為空不參與簽名;

  • 檔案、位元組流不參與簽名;

  • sign不參與簽名;

  • 引數名、引數值區分大小寫;

第二步:將排序後的引數按照URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字串strA;

第三步,在strA後面拼接上apiKey得到striSignTemp字串,將strSignTemp字串轉換為小寫字串後進行MD5運算,MD5運算後得到值作為sign的值傳入服務端;

示例(所有引數、引數值均為示例,開發人員參考格式即可)

首先,新建Md5code類

 public static String sign(JSONObject jObject, String signKey, String tim, String token,String source, String Appkey, String version)
    throws Exception
    {
    if (jObject == null) {
      return null;
    }
    List<String> keyList = new ArrayList(jObject.keySet());
    Collections.sort(keyList);
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < keyList.size(); i++)
    {
      String key = keyList.get(i);
      Object value = jObject.get(key);
      sb.append(key + "=" + value + "&");
    }
    
    
    String signStr = sb.substring(0, sb.length() - 1) + signKey;
    
    JSONObject  sin = JSONObject.fromObject("{"+signStr+"}");
   // System.out.println(sin);
String  signa = "data="+sin+"&source="+source+"&timestamp="+tim+"&token="+token+"&version="+version+Appkey;
//System.out.println(signa);
    String md5Str = DigestUtils.md5Hex(signStr);
  //  System.out.println(md5Str);
    return md5Str;
  }

把此類匯出jar包  新增進jmeter - lib -ext 資料夾


jmeter 測試計劃新增此jar包


在相應samper 新增BeanShell PreProcessor 

如下圖: