日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java类函数默认的保护级别_事件说明

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java类函数默认的保护级别_事件说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簽名算法/**

BodyToSign

1. 解析HTTP BODY:argsMap = parseForm

2. 對Form的參數key按照字典序升序排列,sortedArgs;

3. 遍歷sortedArgs:"&" + key + "=" + percentEncode("/")

*/

StringToSign = HTTP-Method + "&" + percentEncode("/") + bodyToSign;

Signature = Base64Encode(hmacSha1(AccessSecret + "&" + stringToSign));

/**

1. 讀取Request中除"IspSignature"參數外的所有參數。

2. 按照參數名稱的字典順序對參數進行排序。

3. 對每個請求參數的名稱和值進行編碼。名稱和值要使用UTF-8 字符集進行URL編碼,URL編碼的編碼規則是:

a. 對于字符 A-Z、a-z、0-9 以及字符“-”、“_”、“.”、“~”不編碼;

b. 對于其他字符編碼成 “%XY” 的格式,其中 XY 是字符對應 ASCII 碼的 16 進制表示。比如英文的雙引號 (”)對應的編碼就是 %22

4. 對于擴展的 UTF-8 字符,編碼成 “%XY%ZA...” 的格式。

5. 需要說明的是英文空格( )要被編碼是 %20,而不是加號(+)。

注:一般支持 URL 編碼的庫(比如 Java 中的 java.net.URLEncoder)都是按照 “application/x- www-form-urlencoded” 的 MIME 類型的規則進行編碼的。實現時可以直接使用這類方式進行編 碼,把編碼后的字符串中加號(+)替換成 %20、星號(*)替換成 %2A、%7E 替換回波浪號 (~),即可得到上述規則描述的編碼字符串。

1. 對編碼后的參數名稱和值使用英文等號(=)進行連接。

2. 再把英文等號連接得到的字符串按參數名稱的字典順序依次使用&符號連接,即得到規范化請求字符串。

*/Java版簽名實現Demoimport java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import javax.crypto.Mac;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

import javax.servlet.http.HttpServletRequest;

import javax.xml.crypto.dsig.SignatureMethod;

import org.apache.commons.codec.binary.Base64;

/**

* RPC簽名

*

* @return

* @throws UnsupportedEncodingException

*/

private String rpcSign(HttpServletRequest request)

throws Exception {

List keys = new ArrayList(request.getParameterMap().keySet());

Collections.sort(keys);

StringBuilder sb = new StringBuilder();

for (String key : keys) {

if (key.equals("IspSignature")){

continue;

}

String value = request.getParameter(key);

sb.append("&").append(percentEncode(key)).append("=").append(percentEncode(value));

}

StringBuilder stringToSign = new StringBuilder();

stringToSign.append(percentEncode(request.getMethod()));

stringToSign.append("&");

stringToSign.append(percentEncode("/"));

stringToSign.append("&");

stringToSign.append(percentEncode(sb.substring(1)));

SecretKey key = new SecretKeySpec(("YourSecretKey" + "&").getBytes("utf-8"), SignatureMethod.HMAC_SHA1);

Mac hmacSha1 = Mac.getInstance("HmacSHA1");

hmacSha1.init(key);

String sign = new String(new Base64().encode(hmacSha1.doFinal(stringToSign.toString().getBytes("utf-8"))),

"utf-8");

return sign;

}

/**

* 處理特殊字符

*

* @param s

* @return

* @throws UnsupportedEncodingException

*/

protected String percentEncode(String s) throws UnsupportedEncodingException {

if (s == null){

return null;

}

return URLEncoder.encode(s, "utf-8").replace("+", "%20").replace("*", "%2A").replace("%7E", "~");

}

總結

以上是生活随笔為你收集整理的java类函数默认的保护级别_事件说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。