微信一物一码二维码包解密Java版 微信二维码包buffer解密Java版
微信一物一码二维码包解密Java版 微信二维码包buffer解密Java版
一、前言
1、在做微信一物一码解密操作时,关于二维码包解密操作的描述内容十分简单,也没有对应的解密示例,一直纠结着如何实现Java版解密,耽误了不少时间,故而写此文记录下过程。
二、获取相关数据
1、获取密钥key:申请一物一码通过后,在【微信公众平台】,消息中心可以获取对应的密钥。
2、获取二维码加密数据,点击获取 步骤是【2.4 下载二维码包接口】,略。
三、解密操作
1、使用 WechatUtils 工具类解密操作,全部代码这里 , 核心解密代码如下:
/**
* description: 微信一物一码, 二维码解密
* @param encrypted
* @param session_key
* @return String
* @version v1.0
* @author w
* @throws Exception
* @date 2020年9月25日 下午4:39:08
* @see https://developers.weixin.qq.com/doc/offiaccount/Unique_Item_Code/Unique_Item_Code_API_Documentation.html#10
*/
public static String qrDecrypt(String encrypted, String key) {
// 实名数据,先进行base64解码
byte[] encryptedData = Base64.decodeBase64(encrypted);
// key 没有进行编码,直接转换即可
byte[] keyBytes = key.getBytes();
// iv使用加解密钥 --- iv 根据密钥生成的
String result = null;
try {
init();
AlgorithmParameters iv = generateIV(keyBytes);
result = new String(decrypt(encryptedData, keyBytes, iv));
} catch (Exception e) {
e.printStackTrace();
}
return result ;
}
2、测试
@Test
public void test() throws Exception {
// 读取加密文件数据
BufferedReader bufferedReader = new BufferedReader(new FileReader("buffer2.txt"));
String line ;
StringBuilder sb = new StringBuilder();
while((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
bufferedReader.close();
// 执行解密操作
String key = "您的密钥";
String qrDecrypt = qrDecrypt(sb.toString(), key);
System.out.println(qrDecrypt);
}
3、解密后数据如下:
和微信提供的解密数据格式一致,解密成功!
参考资料:https://thinkcode.blog.csdn.net/article/details/108801090
还没有评论,来说两句吧...