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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

微信小程序 java通过 rawData 和 session_key 生成 signature 签名

發布時間:2023/12/31 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信小程序 java通过 rawData 和 session_key 生成 signature 签名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

做微信小程序時,我們需要用戶授權登錄獲取用戶的相關數據,如果涉及到隱私數據,需要服務端通過rawData 和 session_key 生成 signature 簽名,從而校驗數據的準確性

public static String getsignature2(String rawData, String sessionKey) throws UnsupportedEncodingException, NoSuchAlgorithmException {String stringASCII = rawData + sessionKey;String signature2 = null;try {//指定sha1算法MessageDigest digest = MessageDigest.getInstance("SHA-1");digest.update(stringASCII.getBytes("UTF-8"));//獲取字節數組byte messageDigest[] = digest.digest();// 創建 Hex 字符串StringBuffer hexString = new StringBuffer();// 字節數組轉換為 十六進制 數for (int i = 0; i < messageDigest.length; i++) {String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);if (shaHex.length() < 2) {hexString.append(0);}hexString.append(shaHex);signature2 = hexString.toString().toLowerCase();}} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {throw e;}return signature2;}

上述代碼就實現了這個過程,其中有個坑,digest.update(stringASCII.getBytes("UTF-8")); 該行代碼我們指定了編碼格式,這在idea上面運行是沒有問題的,因為idea的編碼格式我們平時也是指定的utf-8,但是當項目部署到tomcat上后,會出現獲取到的 signature 和前端傳過來的 signature 不一致,導致數據檢驗不通過,原因就是tomcat默認的編碼格式是GBK,我們需要手動更改tomcat的編碼格式

打開tomcat里conf 下 的server.xml文件,在 下面圖中的位置添加 URIEncoding="UTF-8" 編碼格式即可

總結

以上是生活随笔為你收集整理的微信小程序 java通过 rawData 和 session_key 生成 signature 签名的全部內容,希望文章能夠幫你解決所遇到的問題。

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