示例代码:

import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.Arrays;
import org.bouncycastle.util.encoders.Base64;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.security.Key;
import java.security.Security;/*** 微信工具类*/
public class WechatDecryptDataUtil {public static void main(String[] args) throws UnsupportedEncodingException {// String data = URLDecoder.decode("SCK0Ik7THl+USkwTRqTQ9BYGe6rWlXosQ8fWA3I3AsFHTCuPnjbsjFooIEZVcS6mq911XeP5BJJBpPU6A1O3aNuC9L7ebXqTMQX83bVBtaDQySvCIlyyq26xhm8AbWWexl5994NJDpKkNml9ilbYia99bF8bXzXvLCksQQkz82EpZTqztzmCrTdFBZOIrJ+lDnl7rSBWJvVVtoagzgSq2Ux59LcJtxCukIUoZ8fz54//Hm4GhrLucO4zPKTi087f77Pd9K9Rz3LLJ79NMQHHQLtZ38Ws79IKoHBZ7xHXbl3O8xPeTBrrWeHbNfNs1CbOyoe0RwXVjs/fMR9451PeLVM5jg4fj3IDyTFjpx5aUzQRaIrSY/BjVFJoxU/viwQC6LsCBOyXl5uV5h+qIPC5suFbmhl5Q56eU07wbOjNxktEIJsIgbrT+GWRZVPba3dUo+6RoZySxCMA16TRKfuTwjXceV3oNueFdTNyw05s9N43OkrLeKcz1dFeNnpA9DHEVngB1J7MY4RkazdKaWzrld1DjxW6+rk01GgtAr3+H88=","UTF-8");String result = decryptData("SCK0Ik7THl+USkwTRqTQ9BYGe6rWlXosQ8fWA3I3AsFHTCuPnjbsjFooIEZVcS6mq911XeP5BJJBpPU6A1O3aNuC9L7ebXqTMQX83bVBtaDQySvCIlyyq26xhm8AbWWexl5994NJDpKkNml9ilbYia99bF8bXzXvLCksQQkz82EpZTqztzmCrTdFBZOIrJ+lDnl7rSBWJvVVtoagzgSq2Ux59LcJtxCukIUoZ8fz54//Hm4GhrLucO4zPKTi087f77Pd9K9Rz3LLJ79NMQHHQLtZ38Ws79IKoHBZ7xHXbl3O8xPeTBrrWeHbNfNs1CbOyoe0RwXVjs/fMR9451PeLVM5jg4fj3IDyTFjpx5aUzQRaIrSY/BjVFJoxU/viwQC6LsCBOyXl5uV5h+qIPC5suFbmhl5Q56eU07wbOjNxktEIJsIgbrT+GWRZVPba3dUo+6RoZySxCMA16TRKfuTwjXceV3oNueFdTNyw05s9N43OkrLeKcz1dFeNnpA9DHEVngB1J7MY4RkazdKaWzrld1DjxW6+rk01GgtAr3+H88=","PKX9EeH6y+pzz8qYrga2jQ==","Ql/m+Ksll5ziCCZj+07J6g==");System.out.println("result = " + result);}public static String decryptData(String encryptDataB64, String sessionKeyB64, String ivB64) {return new String(decryptOfDiyIV(Base64.decode(encryptDataB64),Base64.decode(sessionKeyB64),Base64.decode(ivB64)));}private static final String KEY_ALGORITHM = "AES";private static final String ALGORITHM_STR = "AES/CBC/PKCS7Padding";private static Key key;private static Cipher cipher;private static void init(byte[] keyBytes) {// 如果密钥不足16位,那么就补足.  这个if 中的内容很重要int base = 16;if (keyBytes.length % base != 0) {int groups = keyBytes.length / base + (keyBytes.length % base != 0 ? 1 : 0);byte[] temp = new byte[groups * base];Arrays.fill(temp, (byte) 0);System.arraycopy(keyBytes, 0, temp, 0, keyBytes.length);keyBytes = temp;}// 初始化Security.addProvider(new BouncyCastleProvider());// 转化成JAVA的密钥格式key = new SecretKeySpec(keyBytes, KEY_ALGORITHM);try {// 初始化ciphercipher = Cipher.getInstance(ALGORITHM_STR, "BC");} catch (Exception e) {e.printStackTrace();}}/*** 解密方法** @param encryptedData 要解密的字符串* @param keyBytes      解密密钥* @param ivs           自定义对称解密算法初始向量 iv* @return 解密后的字节数组*/private static byte[] decryptOfDiyIV(byte[] encryptedData, byte[] keyBytes, byte[] ivs) {byte[] encryptedText = null;init(keyBytes);try {cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(ivs));encryptedText = cipher.doFinal(encryptedData);} catch (Exception e) {e.printStackTrace();}return encryptedText;}}
mvn配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>aes</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.57</version></dependency></dependencies>
</project>

java解析小程序encryptedData相关推荐

  1. Java生鲜电商平台-商品中心的架构设计与源码解析(小程序/APP)

    Java生鲜电商平台-商品中心的架构设计与源码解析(小程序/APP) 说明:Java生鲜电商平台中,由于商品的架构很大程度决定了电商的扩展性与伸缩性.对此根据自己多年的生鲜电商经验,整理了以下的商品中 ...

  2. in java中文版百度云 thinking_小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送...

    前面写过一篇云开发实现小程序订阅消息(模板消息)推送的文章,<借助云开发实现小程序订阅消息和模板消息的推送功能>是有好多同学用的是Java写后台,所以今天就再来写一篇Java后台实现小程序 ...

  3. vue小米商城源代码_微信商城信息管理系统(java后台+小程序)

    前一段时间在公众号中发布了一套微信商城信息管理系统(java后台+小程序),也许大家可能都还记得.今天再给大家重复呈现一遍.重新梳理下,方便大家理解这是做什么用的,以便日后使用.开始正题 01 编写目 ...

  4. java 后台 小程序微信支付

    java 后台 小程序微信支付 步骤说明: 微信公众平台支付接口调试工具 #1.生成字符串: appid=appId&body=测试商品名称&mch_id=商户号&nonce_ ...

  5. 小程序消息推送(含源码)java实现小程序推送,springboot实现微信消息推送

    本文是比较老得技术来实现,用最新技术实现小程序推送,请看 5行java代码实现微信小程序模版消息推送 (含springboot后台和小程序源码) 也可以看最新的视频讲解:https://edu.csd ...

  6. 简单明了实现Java地图小程序项目

    简单明了实现Java地图小程序项目 ✨博主介绍 前言 地图概述 地图技术 地图应用场景 网约车服务 智能穿戴 智能物流 智能景区 车联网 国内常见地图 地图API与搜索 JS API GL(演示百度地 ...

  7. 进阶版的Java发牌小程序

    进阶版的Java发牌小程序 考虑到上次的发牌程序有很大的缺陷,无法得知牌的花色和点数,也就无法对牌添加别的操作方法,这次采用面向对象的思想,重新编写这个发牌小程序. 程序如下: /*** 扑克类,具有 ...

  8. 魔搜短视频解析小程序的搭建QA日常解答

    魔搜短视频解析小程序日常解答 本人在github开源的"魔搜短视频解析小程"序有幸得到各位的支持,就此本文章将常见的问题都给说明,如有未能答到的,可以在文章下方联系本人微信反馈.开 ...

  9. 【小程序】解析小程序原理

    ⭐️ 本文首发自 前端修罗场,一个专注 Web 技术.答疑解惑.面试辅导.职业发展的社区. 实际学习过程中,有些同学常常会对小程序和 Web 应用之间的差别产生疑惑,它们之间到底有什么不同, Web ...

最新文章

  1. 在CentOS 6.6 64bit上安装Oracle VirtualBox 5.0.12
  2. Linux 操作系统原理 — 系统启动流程
  3. 统计《ASP.Net特供视频教程》总长度
  4. apidoc文档项目构建
  5. 647. Palindromic Substrings
  6. 译 | 使用Roslyn分析器高效编写更好的代码
  7. 网络爬虫--8.编码趣闻
  8. 一文详解Kafka API
  9. 5 多数据save_5个高质量行业数据报告资源下载地方,自己想一下有多重要吧
  10. java反编译工具_推荐Java反编译工具luyten、jd-gui
  11. 老师,你确定注释不会被执行吗?
  12. 代价函数详解(合页代价与softmax代价)
  13. 用mysql搭建蚂蚁笔记_利用蚂蚁笔记搭建个人云笔记/博客
  14. 山东大学暑期实训-饮食健康管理系统设计与实现(十三)
  15. 华为钱包开卡显示服务器异常,华为手机喜迎微信指纹支付 会遇到的11大常见问题!...
  16. 构建高可用MYSQL主从复制集群
  17. pm2 : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\pm2.ps1,因为在此系统上禁止运行脚本
  18. 最小网元设计【阶段零】
  19. 如何有效选毕业论文题目?
  20. 软件测试常用缩写(uv、pv、dau...):

热门文章

  1. 联通大数据有限公司副总经理 周华:数据科技助力产业智能升级—联通大数据应用实践
  2. SQL server之对象名 'xxx' 无效。
  3. 类淘宝橱窗web应用设计问题
  4. Linux之strace命令
  5. 利用p5.js进行“运动”主题的绘画创作
  6. 十二、Gateway新一代网关
  7. 《Android基础》——第一天
  8. 蒙泰卡罗模拟应用求解pi近似值
  9. Intel CPU 开发平台迭代
  10. 【OpenCV 例程 300篇】237. 基于主成分提取的方向校正(OpenCV)