首先借鉴了两篇文章:
http://www.cnblogs.com/nosqlcoco/p/6105749.html
http://blog.csdn.NET/sinat_29519243/article/details/70186622
首先吐槽一下,微信小程序这个设计,其实密文中包含的用于开发的有用信息并不是很多。
解密后的类似:
-
-
{"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"
-
-
}
解密需要登录的时候 提供的几个参数:
-
密文:encryptedData
-
session_key
-
偏移向量 iv
登录的几个东西如何获取这里简单说下:
-
session_ID的获取:wx.login()函数的返回里面包含了CODE.利用这个CODE,到这个地址去交换:
https://api.weixin.qq.com/sns/jscode2session?grant_type=authorization_code&js_code=CODE&appid=APPID&secret=APP_SRCRET。
-
iv和encryptedData的获取:wx.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) } })
就可以获取到所有的参数。
Java侧实现解密需要如下的包:
-
bcprov-jdk15on-157.jar ----主要是AES解码
-
commons-codec-1.10.jar ----主要是base64编码
核心代码:
-
-
[java] view plain copy
-
|