微信小程序 java通过 rawData 和 session_key 生成 signature 签名
生活随笔
收集整理的這篇文章主要介紹了
微信小程序 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 签名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贝叶斯网络:故障诊断方法研究
- 下一篇: COMSOL模拟卡门涡街的模型