引數名ASCII碼從小到大排序 生成簽名

2021-10-03 16:46:51 字數 1147 閱讀 5087

1、 將整個json報文(剔除signature欄位)引數按照引數名ascii碼從小到大排序(字典序),使用url鍵值對的格式(key1=value1&key2=value2…)拼接成字串signblock。即生成數字簽名的字串

/**

* 生成加簽block

** @param jsonstring 原始報文

* @return 加簽block

*/private string generatesignblockstring(string jsonstring) ]", jsonstring);//原始報文json

jsonobject jsonobject = jsonobject.parseobject(jsonstring, feature.orderedfield);

map maps = jsonobject.getinnermap();

//map maps = (map)json.parse(jsonstring);

arraylistarraylist = new arraylist<>();

int i = 0;

object key;

object value;

for (object map : maps.entryset())

i++;

}string strarray = arraylist.toarray(new string[arraylist.size()]);

arrays.sort(strarray);

stringbuffer stringbuffer = new stringbuffer();

for (i = 0; i < strarray.length; i++)

return stringbuffer.substring(0, stringbuffer.length() - 1).tostring();

}} catch (exception e)

return null;

}

2、 獲取工作金鑰signkey, 在signblock最後拼接上signkey得到signblock&signkey字串,,得到sign值signature。

該方法只適用於對單層的json資料進行拼接與排序,對於內層巢狀的json不能實現排序

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

第一步,設所有傳送或者接收到的資料為集合m,將集合m內非空引數值的引數按照引數名ascii碼從小到大排序 字典序 使用url鍵值對的格式 即key1 value1 key2 value2 拼接成字串stringa。特別注意以下重要規則 public static void main string a...

C 引數按照ASCII碼從小到大排序(字典序)

在對接第三方支付的時候,第三方會要求引數按照ascii碼從小到大排序。如下 public static void requestpay public static string getpara程式設計客棧msrc dictionary程式設計客棧 string paramsmap string re...

從小到大排序

六一兒童節,老師帶了很多好吃的巧克力到幼兒園。每塊巧克力j的重量為w j 對於每個小朋友i,當他分到的巧克力大小達到h i 即w j h i 他才會上去表演節目。老師的目標是將巧克力分發給孩子們,使得最多的小孩上台表演。可以保證每個w i 0且不能將多塊巧克力分給乙個孩子或將一塊分給多個孩子。第一行...