编程知识 cdmana.com

微信一物一码二维码包解密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

 

 

 

 

版权声明
本文为[HaHa_Sir]所创,转载请带上原文链接,感谢
https://thinkcode.blog.csdn.net/article/details/108822436

Scroll to Top