开发微信小程序的时候,第三方应用服务器需要解密微信服务器给的加密数据。当时小程序官方没有给出Java实现。网上的解决方案基本都差不多,但是示例代码不够清晰,逻辑混乱,这里整理一下。
1. Maven引入三方包
Java SE自带的加解密工具包不支持AES/CBC/PKCS7Padding。
org.bouncycastle
bcprov-jdk15on
1.55
2. 测试方法
①进行加解密之前注意导入支持AES/CBC/PKCS7Padding的Provider。
②Base64只是一种编码解码工具,数据编码后,便于网络上传输。跟加解密没关系。
public static void main(String[] args) throws Exception {
//原始数据
String data = "i am data";
//密钥
String sessionKey = "i am strong key ";
//向量
String iv = "i am iv i am iv ";
//用Base64编码
Base64.Encoder encoder = Base64.getEncoder();
String baseData = encoder.encodeToString(data.getBytes());
String baseSessionKey = encoder.encodeToString(sessionKey.getBytes());
String baseIv = encoder.encodeToString(iv.ge