微信一物一碼二維碼包解密Java版 微信二維碼包buffer解密​​​​​​​Java版

HaHa_Sir發表於2020-09-27

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

 

 

 

 

相關文章