侧边栏壁纸
博主头像
小城雨巷 博主等级

行动起来,活在当下

  • 累计撰写 20 篇文章
  • 累计创建 6 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

java解密微信小程序获取的加密数据

Administrator
2023-10-18 / 0 评论 / 0 点赞 / 12 阅读 / 0 字

引入依赖

<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on -->
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.69</version>
</dependency>


package com.ocrweb.util;
 
import org.bouncycastle.jce.provider.BouncyCastleProvider;
 
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.AlgorithmParameters;
import java.security.Key;
import java.security.Security;
import java.util.Base64;
 
public class AesHelper {
 
    private static boolean hasInited = false;
 
    public static void init() {
        if (hasInited) {
            return;
        }
        Security.addProvider(new BouncyCastleProvider());
        hasInited = true;
    }
 
 
    public static void main(String[] args) {
        String session_key = "gQoIRc5n3qWgqBePwT2prQ==";
        String iv = "VzE1kg8Xc1G/FanPceiBSg==";
        String encryptData = "0b113c76cOI5RfUWo4aAlI+CdZKP+M0Y4wBaSKhTsanQeB2jvPkaHroGNVoxx5nLS3jpfyOMj/hEtzAb17aMd/hBKGqlTTTCmpw6iguoDLEevG54Y1i6AmiUuc5R67RTiMF6f82ilH1G74KHBrA2A/FK2w/isqp1Jggo0QW1GH3EC/dHnk5ihNCJfsb6xXhbMdfGZkMzEe7TQW6AGzRLDkV7GpJqryUgu5K2fg8RpSZxerGAcYdEOb7O3fVM0MciIQL9FjVJ7NbgBV5c1TrFG7GplPF6zHB0tFPMUVmqZqjDqL6DnCQejJk03vAM8hE9yiFrYG5L9wP1NM1gkOx8IFNmwIHNTBUPM/3VjHMNJQQt/pRxGPuoj3VRXrlqMKNo/uVpGuyOWuuwG0bycVZkGOxQ2P8ZwlYWYvhiOCiPMyIoiE55bV/S0c=";
        String decrypt = decrypt(session_key, iv, encryptData);
        System.out.println(decrypt);
    }
 
    public static String decrypt(String session_key, String iv, String encryptData) {
        String decryptString = "";
        init();
        byte[] sessionKeyByte = Base64.getDecoder().decode(session_key);
        byte[] ivByte = Base64.getDecoder().decode(iv);
        byte[] encryptDataByte = Base64.getDecoder().decode(encryptData);
 
        try {
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
            Key key = new SecretKeySpec(sessionKeyByte, "AES");
            AlgorithmParameters algorithmParameters = AlgorithmParameters.getInstance("AES");
            algorithmParameters.init(new IvParameterSpec(ivByte));
            cipher.init(Cipher.DECRYPT_MODE, key, algorithmParameters);
            byte[] bytes = cipher.doFinal(encryptDataByte);
            decryptString = new String(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return decryptString;
    }
}
0

评论区