java微信退款解密,微信退款通知解密问题local_policy.jar和US_export_policy.jar

2023-11-12

在微信退款申请成功后异步通知会返回一段加密串(在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.

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

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

java微信退款解密,微信退款通知解密问题local_policy.jar和US_export_policy.jar 的相关文章

  • python 学习笔记(一)元组

    元组运算符 与字符串一样 元组之间可以使用 号和 号进行运算 这就意味着他们可以组合和复制 运算后会生成一个新的元组 Python 表达式 结果 描述 len 1 2 3 3 计算元素个数 1 2 3 4 5 6 1 2 3 4 5 6 连
  • 用python将数据保存至现存excel的指定sheet内

    import openpyxl import pandas as pd def save to excel sheet data path excel sheet name 将DataFrame数据存入指定excel的指定表格名称 wb o
  • uint 数据类型理解

    uint unsigned int 无定义整型 uint不能为负数 int可以为负数 uint和int的区别 uint无符号int 什么是有符号 难道负数就是有符号 一 指代不同 1 uint 对应于无符号整数 2 int 一种数据类型 在
  • 【MATLAB函数】function定义函数

    1 函数声明 定义 function 返回变量列表 函数名 输入变量列表 如 function y1 yN myfun x1 xM end 声明一个名为myfun 的函数 该函数接受输入参数 x1 xM 并返回输出参数 y1 yN 此声明语
  • from shapely.geos import lgeos 出错

    Shapely 安装以后出现下面这个错误 from shapely coords import CoordinateSequence File C ProgramData Anaconda3 envs db lib site package
  • 爬虫入门使用

    用第三方服务 https www bazhuayu com https www jisouke com pro product html 用他们做出来的文件在放到数据库中 参考资料 jsoup
  • pysot 运行demo注意事项

    研究siam rpn 首先跑通demo 按照install md安装环境 path to conda pysot都是到conda pysot的路径 linux中 export PYTHONPATH path to pysot PYTHONP
  • C++开发者的机会在哪里?盘点C/C++就业方向

    引用一个校招脉友的提问 现在C 的机会是不是越来越少了 这个问题还是老生常谈 看看大家怎么说 不难发现 c 很多的岗位很多都存在两个共性 第一个 岗位比较高端 任职要求高 第二个 部分在传统行业 流动性不大但薪资较其他的语言薪资较低 所以显
  • openssl在windows环境和linux环境中的使用问题

    场景 使用c程序调用openssl在windows上进行加密 加密之后的结果放到linux环境中使用 问题 发现在windows中加密之后的密码 在linux环境中使用openssl进行解密得到的结果与加密之前不符 原因 发现是window
  • 第三章 信息系统资源管理

    信息系统资源管理概述 信息系统资源管理 为完成信息系统资源的合理开发和高效利用 保证优质的信息系统上线 并能发挥信息系统在企业运行中的重要作用所采取的一系列管理措施 信息系统基本概念 信息系统 IS 信息系统是一个完成信息采集 传递 存储
  • Clion2021的安装并实现stm32F103点亮LED

    CLion是Jetbrains公司旗下新推出的一款专为开发C C 所设计的跨平台IDE 它是以IntelliJ为基础设计的 同时还包含了许多智能功能来提高开发人员的生产力 CLion专为使用C和C 以及 Kotlin Native Rust
  • Vue经典面试题 ,为什么组件中的data是一个函数而不是一个对象

    为什么vue组件中的data是一个函数 官方解析 Vue 实例的数据对象 Vue 会递归地把 data 的 property 转换为 getter setter 从而让 data 的 property 能够响应数据变化 当一个组件被定义 d
  • 【电力电子技术】全桥 半桥 推挽 双管正激 DC-DC

    BUCK BOOST BUCK BOOST CUK SEPIC ZETA 二象限 四象限 多重多相DCDC FLYBACK FORWARD 全桥 半桥 推挽 双管正激 DC DC CURRENT DOUBLER
  • IEEE-754 64位双精度浮点数存储详解

    IEEE 754双精度浮点数 IEEE二进制浮点数算术标准 IEEE 754 规定了四种表示浮点数值的方式 单精确度 32位 双精确度 64位 延伸单精确度 43比特以上 很少使用 与延伸双精确度 79比特以上 通常以80位实现 本文介绍6
  • 干货!小白入门Python数据科学全教程 Python大数据分析

    本文讲解了从零开始学习Python数据科学的全过程 涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话 我是一名数据工程师 在用SAS做分析超过5年后 决定走出舒
  • Python中去掉字符串空格的方法有哪些?

    在Python中 当我们使用Python处理字符串时 经常会遇到字符串中包含空格的情况 那么Python如何去掉字符串空格 有多种方法可以从Python字符串中删除空格 以下是详细内容介绍 1 使用strip 方法 它是一个Python内置
  • KeyError: ‘Transformer/...query\\kernel is not a file in the archive‘,已解决。

    在跑TransUNet时 遇到很多报错 前面的都是一些版本不对应问题 然后遇到了这个源码还未完善的小bug 这个错误主要由字符串地址拼接时Windows和Linux等其他系统不太一样 Windows使用 符号 所以找到字符串拼接的地方加上
  • linux中 .zip .gz .tar 的差别及解压缩命令

    一 Linux下最常用的压缩文件就是 tar了 使用tar程序打出来的包我们常称为tar包 对于tar包 可以再用gz zip等压缩算法再次压缩 比如 jdk 8u181 linux x64 tar gz 二 解压缩命令 tar 可以保留原
  • pe模式下修复usb驱动_伺服驱动器三种控制模式的接线

    我们在平时控制伺服电机的时候 经常用到的控制模式就是三种模式分别是速度控制模式 位置控制模式 转矩控制模式 现以三菱的伺服驱动器为例 下面分别了解一下每个模式的控制接线及其注意事项 一 速度控制模式 注 1 为了防止触电 请务必将伺服放大器

随机推荐

  • python高级培训第五次任务

    使用定时器实现当前时间每秒循环输出一次 import threading import time def run print time strftime Y m d H M S time localtime time time t thre
  • 仿微信实现ListView长按删除

    简言 仿微信做了一个对话列表 长按每个列表项弹出popupwindow进行删除操作 最终效果如下 第一步 制作列表界面 可以是ListView 也可以是RecyclerView 布局大家可以自己设计 本文采用的是ListView 第二步 为
  • blockly

    学习自定义块 视频学习 https developers google com blockly guides create custom blocks blockly developer tools hl zh cn 自定义地址 https
  • 作为一个C++新手,我感兴趣的C++开源项目

    2023年4月30日 周日晚上 昨天完成了一个C 项目后 想再开始一个C 项目 但不知道做什么 于是决定看看有什么好的C 开源项目 今晚在网上逛了一圈后 发现了好多有趣的C 开源项目 参考文章 GitHub Top 10 C 优质开源项目
  • SQLServer连接Pgsql或mysql读写数据

    问题 想把SQLServer的数据库迁移到PgSql里面 因为两个数据库业务表的结构和字段都不一样 需要逐表进行按需抽取想要的字段并导入数据 解决方案 可以在SqlServer里面创建链接服务器 链接到Pgsql的表 然后在SQLServe
  • 如何在Anaconda安装Pygame

    开始之前 先来安装Pygame 可使用pip模块来帮助下载安装python包 要安装Pygame 需在终端提示符下执行如下命令 python m pip install user pygame 对于下载了anaconda用户 可按以下操作
  • cisp-pte考试复盘及常考题型总结

    一 选择题 说基础也不基础 pte的题都是偏实践的那一类 感觉也不算简单 不好好看看还真容易栽这上面 那就太可惜了 比如 DMZ区 php伪协议 谷歌命令 00截断中对php版本的要求等等类似的 二 大题 1 sql注入 1 碎碎念 第一题
  • R语言系统教程(八):绘图命令

    R语言系统教程 八 绘图命令 8 1 高水平绘图函数 8 1 1 plot 函数 8 1 2 显示多变量数据 8 1 3 显示图形 8 2 高水平绘图中的命令 8 2 1 图中的逻辑命令 8 2 2 数据取对数 8 2 3 type 8 2
  • CORS跨域资源共享/一些非同源解决方法

    定义 向不同服务器发送请求 在另一要被访问的服务器端可以这么写 拦截所有请求 app use req res next gt 1 允许哪些客户端访问我 代表允许所有的客户端访问我 注意 如果跨域请求中涉及到cookie信息传递 值不可以为
  • 计算机网络基本概念

    互联网的两个重要基本特点 连通性和共享 计算机网络 由若干结点和连接这些结点的链路组成 网络之间可以通过路由连接起来 构成一个覆盖范围更大的网络 称为互连网 也称为 网络的网络 网络把许多计算机连接在一起 而互连网则把许多网络通过路由器连接
  • SecureCRT常用命令

    常用命令 一 ls 只列出文件名 相当于dir dir也可以使用 A 列出所有文件 包含隐藏文件 l 列表形式 包含文件的绝大部分属性 R 递归显示 help 此命令的帮助 二 cd 改变目录 cd 进入根目录 cd 回到自己的目录 用户不
  • 【HTML、CSS】使用HTML、CSS实现动态爱心

    HTML部分源码 div class box div
  • OpenCV计算机视觉实战 - 文档扫描OCR识别【项目实战】

    纸上得来终觉浅 绝知此事要躬行 B站视频 新课件 https pan baidu com s 1frWHqCVGR2VTn5QBtW4lPA 提取码 xh02 老课件 https pan baidu com s 1Wi31FxSPBqWiu
  • Kubernetes学习之路目录

    Kubernetes基础篇 环境说明 版本说明 系统环境 Centos 7 2 Kubernetes版本 v1 11 2 Docker版本 v18 09 Kubernetes学习之路 一 之概念和架构解析和证书创建和分发Kubernetes
  • c语言empty函数返回结果,C语言:实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置...

    include void init int arr int len int i 0 printf 初始化数组 gt n for i 0 i scanf d arr i void reverse int arr int len int i 0
  • 逆向爬虫02 re模块

    python re模块 re是python中自带的正则表达式模块 可以用于正则匹配 1 findall 将匹配到的所有结果塞进列表并返回 import re 匹配字符串中的所有字符 a result re findall a 我是一个abc
  • 如何运营头条号自媒体?这篇文章告诉你

    头条号的兴起 带动了很多没有做过自媒体的人去参与 在这么多年当中 已经有很多的普通人 通过实操头条自媒体 实现了自己的财富自由 今天就给大家讲讲如何运营头条号自媒体 一 头条号的规则和机制 想要做好任何一个自媒体平台 首先就要摸透这个平台的
  • vs2017安装qt插件及安装qt插件后的设置

    vs2017安装qt插件 引言 涉及内容 一 vs2017安装qt插件的过程 二 安装qt插件成功后的设置 三 创建第一个关于qt的程序 四 设置属性后代码可以查看 引言 安装vs2017后需要在vs2017中安装qt插件 这样可以直接在v
  • Linux删除目录下的大量文件命令

    Linux删除目录下的大量文件命令 如果目录下文件数量不大 可以尝试指定时间删除文件 如 查询指定路径somepath下 创建日期为一周前的所有目录 并删除 find somepath type d mtime 7 xargs rm rf
  • java微信退款解密,微信退款通知解密问题local_policy.jar和US_export_policy.jar

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