微信退款申请成功异步通知使用AES解密问题

2023-10-27

在微信退款申请成功后异步通知会返回一段加密串(在req_info字段里)

按照微信文档的做法是

1.对返回的加密串req_info做base64解码,得到另一个加密串

byte[] b = Base64Util.decode(map.get("req_info"));

2.对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 ) 

这里的key是微信商户生成的key  对生成的key进行MD5加密

SecretKeySpec key = new SecretKeySpec(MD5Util.MD5Encode(wechat_key).toLowerCase().getBytes(), "AES"); 

3.用key*对加密串B做AES-256-ECB解密(PKCS7Padding)

public static String decryptData(byte[] b) throws Exception {
        Cipher cipher = null;
        cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE,key);
        return new String(cipher.doFinal(b),"utf-8");

    }

当使用PKCS7Padding 进行解密时报错:    Cannot find any provider supporting AES/ECB/PKCS7Padding

其实PKCS7Padding 跟 PKCS5Padding一样 将PKCS7Padding 换成PKCS5Padding

当使用PKCS5Padding时报错:Illegal key size or default parameters.

这个错时因为 使用AES加密时,当密钥大于128时,代码会抛出java.security.InvalidKeyException: Illegal key size or default parameters

Illegal key size or default parameters是指密钥长度是受限制的,java运行时环境读到的是受限的policy文件。文件位于${java_home}/jre/lib/security下 这种限制是因为美国对软件出口的控制。

解决办法:去掉这种限制需要下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files.

注意:下载此文件必须跟本地jdk版本对应上 比如本地jdk版本1.8 下载此文件时必须是8的版本

下载如下图


下载解压后就是替换${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar。

因为版本对应不上搞了两天终于搞定...特此记录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信退款申请成功异步通知使用AES解密问题 的相关文章

随机推荐

  • 【蓝桥杯】1246. 等差数列*

    穿越隧道 计算每两项差值之间的最大公因数 最后的值则为数列的等差 include
  • 2023年最新Python所有方向的学习路线图,让Python初学者少走弯路

    在放学习路线之前 我先来讲一下这个学习路线图有什么作用 避免有些新手看得云里雾里的 学习路线图上面写的是某个方向建议学习和掌握的知识点汇总 举个例子 如果你要学习爬虫 那么你就去学Python爬虫学习路线图上面的知识点 这样学下来之后 你的
  • Android http安全之网络编程和证书

    最近面试上市大公司遇到的问题 网络安全底层与fiddler证书 我只想吐槽果然不缺人 上篇劫持的第二篇研究总结 如果通常网络我们使用常用的开源框架 然后设置通用的异步同步通信等格式 但是底层呢 这个我们常说只有面试的时候会用到 那如果想要黑
  • 开发参考资料

    一 开发环境 Ubuntu gt 20 04 x64 arm64 Visual Studio gt 2019 二 参考资料 OpenCV 官方文档 https opencv org releases Qt6 下载地址 https mirro
  • Vue中使用原生js创建元素样式不生效解决办法

    在Vue项目中也会遇到需要动态创建DOM的情况 但是采用指定className的方式给创建的DOM元素指定样式不起作用 在调试界面能看到类名被解析 但是样式未加载 三天里尝试了N种方法 终于填了这个大坑 有需要的可以参考一下 measure
  • 概念解析

    注1 本文系 概念解析 系列之一 致力于简洁清晰地解释 辨析复杂而专业的概念 本次辨析的概念是 CLIP和BLIP模型 揭秘视觉与语言交叉模型 CLIP和BLIP的介绍 LB 0 45836 BLIP CLIP CLIP Interroga
  • 让你的微信小程序具有在线支付功能

    最近需要在微信小程序中用到在线支付功能 于是看了一下官方的文档 发现要在小程序里实现微信支付还是很方便的 如果你以前开发过服务号下的微信支付 那么你会发现其实小程序里的微信支付和服务号里的开发过程如出一辙 下面我就具体说一下小程序里微信支付
  • JS限制Textarea文本域字符个数

  • overlay(VLAN,VxLAN)、underlay网络、大二层概述

    一 网络类型 1 第一种网络 网络分为物理网络和虚拟网络 物理网络就是对物理交换机 物理路由器 物理防火墙 物理负载均衡器 物理行为管理设备组成的网络 就叫做物理网络 虚拟网络 一般指虚拟交换机 虚拟路由器 虚拟防火墙 虚拟负载均衡器 虚拟
  • 企业子网划分详解

    一 IP协议 1 IP协议简介 IP协议是TCP IP协议族的基石 它为上层提供无状态 无连接 不可靠的服务 也是Socket网络编程的基础之一 IP协议特点 无状态 指IP通信双方不同步传输数据的状态信息 因此所有IP数据报的发送 传输
  • 如果XML文件太大(10M),打开方式选择

    用UltraEdit打开 其他的例如Editplus和notepad 根本打不开上百M的文件 一打开就死了
  • 小白入门必看——idea中JAVA配置

    java基础篇 首先需要大家下载idea 这里楼主为大家提供idea官网 供大家使用 idea官网 点这里 文章目录 java基础篇 前言 一 为什么要安装jdk 二 配置步骤 1 创建时配置 2 创建好后导入JDK 总结 前言 在idea
  • Ubantu使用kubeadm部署kubernetes1.25.10+cri-docker

    基于Ubantu系统的k8s集群搭建 文章目录 前言 一 Kubernetes是什么 二 环境准备 依赖添加 三节点操作 三 修改初始化文件 配置初始化 Master节点 Node节点 四 安装Calio网络插件 Master节点 总结 前
  • vant 做表格_Vant Cell 单元格

    引入import Vue from vue import Cell CellGroup from vant Vue use Cell Vue use CellGroup 代码演示 基础用法 Cell可以单独使用 也可以与CellGroup搭
  • 服务器组装 华硕主板,专业组装服务器 华硕主板P9D-C/4L热销

    中关村在线西安行情 华硕P9D C 4L是一款新推出的高性能主板 小编了解到在商家 西北服务器配件批发中心 正在热销中 报价仅1980元 用兴趣的朋友不妨与商家联系 图为 华硕P9D C 4L 华硕P9D C 4L产品简介 出色的 I O扩
  • 实战:win10安装docker并用docker-compose构建运行容器

    文章目录 前言 Docker Desktop Hyper V 安装 Docker Desktop for Windows 下载docker desktop Docker安装目录软连接 运行Docker Desktop安装文件 Docker
  • SpringBoot中静态变量注入方案,一网打尽

    前言 Hi 大家好 我是麦洛 昨天同事来找我 说自己想使用 Value注解来注入值 但是发现注入不进去 想让我帮忙看看 研究了一番 最后发现是 Value注解无法注入静态变量 下面我们一起来回顾一下本次的bug 普通变量 首先我们来看看 如
  • 微信小程序获取位置权限用户拒绝授权后重新引导用户授权

    微信小程序获取位置权限用户拒绝授权后重新引导用户授权 解决问题 微信小程序获取位置权限 用户点击允许后直接地图选点 或者用户拒绝授权后引导用户到设置页面重新授权 需要代码可直接滑至页面底部 调用方法 1 利用uni getSetting 获
  • 支持m1的视频无损放大软件:Topaz Video Enhance AI Mac版

    Topaz Video Enhance AI for Mac是一款专业的AI视频无损放大软件 topaz video enhance ai mac版使用时间信息有效提高视频质量和细节 从而达到最好的视频放大 去隔行 降噪和还原效果 另外to
  • 微信退款申请成功异步通知使用AES解密问题

    在微信退款申请成功后异步通知会返回一段加密串 在req info字段里 按照微信文档的做法是 1 对返回的加密串req info做base64解码 得到另一个加密串 byte b Base64Util decode map get req