/**
* @Author: shang
* @Date: Created in 9:26 2021/6/15
* @ClassName: AesCbcUtil
* @Description: 微信用户加密信息解密工具
*/
public class AesCbcUtil {
static {
// BouncyCastle是一个开源的加解密解决方案
Security.addProvider(new BouncyCastleProvider());
}
/**
* AES解密
*
* @param data // 密文,被加密的数据
* @param key // 秘钥
* @param iv // 偏移量
* @return
* @throws Exception
*/
public static JSONObject decrypt(String data, String key, String iv) throws Exception {
// 被加密的数据
byte[] dataByte = Base64.decodeBase64(data);
// 加密秘钥
byte[] keyByte = Base64.decodeBase64(key);
// 偏移量
byte[] ivByte = Base64.decodeBase64(iv);
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
parameters.init(new IvParameterSpec(ivByte));
cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化
String resultString = new String(cipher.doFinal(dataByte), StandardCharsets.UTF_8);
return JSONObject.parseObject(resultString);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
Aes解密工具类
最新推荐文章于 2023-02-02 11:00:16 发布
该代码段展示了如何使用BouncyCastle库实现AES/CBC/PKCS5Padding的解密过程。类AesCbcUtil包含了静态初始化和一个解密方法,该方法接收密文、秘钥和偏移量作为参数,通过Base64解码后进行解密,最后将解密后的字符串转换为JSONObject。
691

被折叠的 条评论
为什么被折叠?



