首先借鑒了兩篇文章:
http://www.cnblogs.com/nosqlcoco/p/6105749.html
http://blog.csdn.NET/sinat_29519243/article/details/70186622
首先吐槽一下,微信小程序這個設計,其實密文中包含的用于開發(fā)的有用信息并不是很多。
解密后的類似:
-
-
{"openId":"oy9H90Nqxxxxxxxxxxx0BJmuw",
-
-
"nickName":"xxxxxxxxx",
-
-
"gender":1,
-
-
"language":"zh_CN",
-
-
"city":"city",
-
-
"province":"province",
-
-
"country":"country",
-
-
"avatarUrl":"https://wx.qlogo.cn/mmopen/vi_32/xxxxxxxxOcvbibeJxx0",
-
-
"watermark":{"timestamp":timestamp,"appid":"wx58b6xxxxxxxxx627"
-
-
}
解密需要登錄的時候 提供的幾個參數(shù):
-
密文:encryptedData
-
session_key
-
偏移向量 iv
登錄的幾個東西如何獲取這里簡單說下:
-
session_ID的獲?。簑x.login()函數(shù)的返回里面包含了CODE.利用這個CODE,到這個地址去交換:
https://api.weixin.qq.com/sns/jscode2session?grant_type=authorization_code&js_code=CODE&appid=APPID&secret=APP_SRCRET。
-
iv和encryptedData的獲?。簑x.getUserInfo()的調用的時候,同時設置屬性withCredentials: true,
-
wx.getUserInfo({ withCredentials: true, success: function(res) { console.log(res) that.globalData.userInfo = res.userInfo typeof cb == "function" && cb(that.globalData.userInfo) } })
就可以獲取到所有的參數(shù)。
Java側實現(xiàn)解密需要如下的包:
-
bcprov-jdk15on-157.jar ----主要是AES解碼
-
commons-codec-1.10.jar ----主要是base64編碼
核心代碼:
-
-
[java] view plain copy
-
|