微信支付-退款通知消息AES-256-ECB解密

【微信小程序】微信退款注意事项及退款通知信息解密 1.商户退款单号 (out_refund_no)必须唯一,如果不唯一微信端返回的错误提示是“支付单号校验不一致”,需要注意。 2.退款解密算法注意操作密钥。在此记录下解密代码。 (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–&g... 阅读详情

微信支付退款通知:
退款结果对重要的数据进行了加密,商户需要用商户秘钥进行解密后才能获得结果通知的内容

拿到了reqInfo加密字符串,需要按照一下步骤解密。

解密步骤如下:
(1)对加密串A做base64解码,得到加密串B
(2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置 )

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

代码如下:

    @Test
    public void refundNotifyTest(){
        String reqInfo = "vkzb2qYxQwtb4k/Scpng+9wmAummpwMf8tx9Gnvqfvy6QqVgSBjZq3E6YStd+aBqIf5qUIfU9vXfwr2tPUuph9ycxMZhIOeap8HoRjvP8vEKCFMQYOH74ionvgt74OKJN5TZd9zY4dGlIRyrZf71Ug+ENz9KA+HdNrFojcSbz5ZaOcWHNacvMrr8MVTFGr6BpMUmYrhxuboxNQuqJUlr8SRJNaiOiuponCrQIoC1s+mQbyybdERnvfXu66zMmtF5t7hAV+XJZrEhU5hPnLZfcyfuQQe3b/uJjvUpxRuceFvbsHZPvFrVWaeoOFRmAHJ1HxOjM0xtuVnKOwgYJJUSsBk6ECPpDdGFFaK05vcB1dS6Nui+mOw39+LzDUovGnDOL4gvTqmyyzLTIP7VL7RVwkmuOo7WkSYfUoJ+RQbR6QBECKAxSuYTHVPlNNDFe70bP2x4tbCcWVeG6l4oJOBvp7EPVB7bKFvGOLG+Jfvvo7m1H862NUpt7l7z2MN/WP54rCO3+zYPbCLRXCyT2yZbFuZVJk7SR6fhCK8NJA/yiWTFp9YChdcEhNNQx3dsQwxixw/LngpUcsTl7je+D+g/lBwFeRh8uL3uCvnhtAixuBaJw/eV/9pEVmVJA5uL5amVW6DlGmDBtl03H7HstCAq7vh5I7QDxNk3oWwjyN9pK7vAEQ0BDd+fxH4Rb0mlf+cbq4H52mJxLqFJPg3oij9MCqumgyQ5HB+ARz4S+QcD1MYGSokQKdbunRuSmkv7gSieUkDaV7HYMUJPfjDqmWP5lbREhjM5VIMw9pxUV260ngt/armpJTnsHOXfZB4J0+u2Ja1FBdlNUk/cHVXFmPwPfAxmU6cIOVnbHAQhWaHcFd9UwdDn9LOhEHipp1FKLAAdkq6Uhmv8rQpXNDFsGG+HoYuryd7Jcn4UaVDLxHfaaMTIXNP1WuayYRJqlG8P8g1Vk2KFN2OIJSIh91rOhFBe896ieqOkVD/qF+56sCKyvaj7ECXbXY90gNeBK2JK+uZgH104jZRN+Mc9kMGFBaSxHuduxr/uEPpGmvEg2Fo3ckGrTrcpDL+iQKGTlYJfZ6Gp";
        byte[] reqInfoByte = Base64Utils.decodeFromString(reqInfo);

        try {
            String result = decryptData(reqInfoByte);
            System.out.println(result);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    //密钥算法
    private static final String ALGORITHM = "AES";

    //加解密算法/工作模式/填充方式
    private static final String ALGORITHM_MODE_PADDING = "AES/ECB/PKCS7Padding";

    //生成key
    private static SecretKeySpec key = new SecretKeySpec(SignUtil.md5("api密钥", "UTF-8").toLowerCase().getBytes(), ALGORITHM);

    /**
     * AES解密
     * @param base64Data
     * @return
     * @throws Exception
     */
    public static String decryptData(byte[] base64Data) throws Exception {
        //Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
        Cipher cipher = Cipher.getInstance(ALGORITHM_MODE_PADDING);
        cipher.init(Cipher.DECRYPT_MODE, key);
        return new String(cipher.doFinal(base64Data), "UTF-8");
    }

抱错信息为:
Cannot find any provider supporting AES/ECB/PKCS7Padding

后百度找到解决方法:
添加依赖:

    <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-ext-jdk16</artifactId>
            <version>1.46</version>
        </dependency>

decryptData方法添加:

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

运行解密成功。

AES-256 ecb模式加解密软实现算法,标准数测试通过。 工程VS2008编译通过,附C代码实现。主要接口为:aes256_init、aes256_done、aes256_encrypt_ecb、aes256_decrypt_ecb。标准数测试通过。 立即下载

相关推荐

腾讯滑块验证码collect参数逆向与JSVMP对抗实战

本文深入解析腾讯滑块验证码collect参数的逆向过程与JSVMP虚拟机对抗技术。通过详细的环境搭建、抓包分析和JSVMP逆向技巧,揭示collect参数的生成逻辑与加密流程,并提供完整的模拟实现方案和常见问题排查方法,助力开发者突破腾讯天御验证码的防护机制。

weixin_29009501的博客 1573

java aes 256 ecb解密_python Crypto AES-256-ECB 与PHP之间完成加解密

AES算法描述:首先AES是一种对称加密算法。算法特点:1、AES的区块长度固定为128 比特(16字节)。# 因此在加密前需要对待加密字符串进行填充,长度填充至128bit整数倍。2、密钥长度可以是128(AES-128-ECB),192(AES-192-ECB)或256(AES-256-ECB)比特。# 在加解密前需要对加密密钥进行填充,填充至对应位数。1、php:aes-256-ecb解密:...

weixin_39969298的博客 975

扣子(Coze)实战:自动化拆解抖音对标账号,输出完整报告(附源码下载)

本文要分享的工作流,可以实现对标账号的拆解与分析,最后输出一份完整的分析报告,报告中包含有账号基本信息、账号定位、人设设计、选题方向、内容结构、变现路径以及优化建议等。

MCC_MCC_MCC的博客 2827

关于aes-256-ecb加密算法、模式的加解密问题

使用base64_encode($openssl_encrypt(‘需要加密的值’, ‘aes-256-ecb’, $aes_key, OPENSSL_RAW_DATA))加密,对应的java代码

qq_19316157的博客 828

Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解

Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解 gelsight gelsight传感器具有软弹性体的接触表面,可以精确的重建物体形状还可以从传感器的变形推断接触力和滑动. 使用 DST-II 算子的快速泊松求解 height 文章:GelSight: High-Resolution Robot Tactile Sensors for Estimating Geometry and Force 文章最后求解的方程其实是: p=∂2u∂x2+∂

qq_42236622的博客 1242

嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板

想要把qt工程放到开发板上运行,就需要用到交叉编译。由于qt是跨平台的,所以只需要换个编译器编译一下就可以。 以“定时器”的例子为例,在移植之前还需要进行一个准备工作,在windows下运行的时候,电脑屏幕很大,但是运行的窗口只有一点点大,开发板也有外接屏幕,如何让运行窗口自动适配开发板的外接屏幕呢?令其占满屏幕显示,而不是一小块。 第一步:需要设置一下,先给ui布局,如果不布局,控件就不会随着屏幕的大小的变化而变化。 第二步:利用代码来获取屏幕的大小,给widget.cpp文件下添加如下代码 #inclu

qq_42822743的博客 5457

微信支付退款结果通知解密 base64_decode / md5 / AES

转自 https://jishu8.net/tag/wxpay   微信支付退款结果通知解密步骤如下: 第一步,对商户密钥key进行MD5加密,得到32位小写加密串StringA key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 第二步,使用StringA作为key,对参数加密串进行AES-256(ECB模...

weixin_30851867的博客 722

2021电子科技大学分布式系统期末考点精析与实战解析

本文深入解析2021年电子科技大学分布式系统期末考试核心考点,包括分布式事务、时钟同步、GFS架构等高频内容。基于回忆版试题,提供实战解析与应试技巧,帮助考生高效复习。重点涵盖两阶段提交、Cristian算法等关键技术,适合计算机专业学生备考参考。

weixin_29251131的博客 539

[ delphi ] AES-256-ECB 加密、解密算法控件说明

AES-256加密、解密算法控件说明前言1. 控件属性1.1 SourceEncodingType:源字符串的编码方式1.2 AlgoMode: 算法模式1.3 KeyBit: 密钥长度1.4 KeyStr: 当前密钥1.5 PaddingType:补齐方式1.6 InitVector:初始向量1.7 SourceStr:源字符串2. 公共方法2.1 Bytes2HexStr:字节流转16进制字符...

sensor_WU 博客 4985

UE5新手必看:如何用蓝图系统快速打造赛车游戏(含Chaos Physics配置)

本文为UE5新手提供使用蓝图系统快速打造赛车游戏的完整指南,涵盖Chaos Physics配置、载具蓝图架构设计、控制逻辑实现等关键步骤。通过详细的实战案例和优化技巧,帮助开发者高效构建具备专业物理反馈的赛车游戏原型。

weixin_29001327的博客 387

DSPACE仿真平台的使用

DSPACE仿真平台的使用 文章目录DSPACE仿真平台的使用1.ModelDesk新建项目2.MotionDesk引入项目3.ControlDesk引入项目4.项目整合运行 我们使用DSPACE仿真平台软件来模拟小汽车的自动驾驶。 总共需要用到DSPACE大类下的三个软件:ModelDesk、ControlDesk、MotionDesk。 1.ModelDesk新建项目 在桌面上点击ModelDesk图标,打开DSPACE—ModelDesk 选择 File 标签,侧边栏选择 New,点击 New A

qq_42582489的博客 7527

AES 加密128/256(ecb\cbc)

package com.wmeimob.bszf.util;import java.io.UnsupportedEncodingException;import java.security.InvalidAlgorithmParameterException;import java.security.InvalidKeyException;import java.security.NoSuchAl...

qq_36538512的博客 2960

游戏开发实战:5种AOI算法对比(九宫格 vs 灯塔 vs 十字链表)

本文深入对比了游戏开发中五种主流AOI算法(九宫格、灯塔、十字链表等)的性能与适用场景,帮助开发者根据项目规模选择最优解决方案。通过详细的技术分析和实战数据,揭示不同算法在万人同屏等极端场景下的表现差异,为MMORPG等大型多人在线游戏提供关键性能优化指南。

weixin_29268385的博客 474

微信退款结果通知

import java.io.BufferedReader; import java.security.Security; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import j...

zhoucanji的博客 1681

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

微信支付退款通知参数解密遇到的坑-附java编码

最近在写微信支付退款这块,对退款的回调解密微信社区也没有给出一篇解密的具体方案,通过查阅各位前辈的经验,最终问题得到解决。 这里总结下,后期方便查阅~ 问题1:java.security.InvalidKeyException: Illegal key size or default parameters jre自带的加密jar包支持128位,如果需要支持256位加密、解密需要去orace下载jar包,替换jdk安装路径下 C:\Program Files\Java\jdk1.8.0_25\jre\lib\

carowei的博客 1781

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

python实现key*对加密串B做AES-256-ECB解密(PKCS7Padding)(微信退款通知接口)

python中微信退款回调接口中的解密 先安装第三方库 pip install pycryptodome D:\Python\airticketorder>pip install pycryptodome Collecting pycryptodome Downloading pycryptodome-3.9.9-cp38-cp38-win32.whl (14.1 MB) |████████████████████████████████| 14.1 MB 6.4 MB/s Instal

m0_47213847的博客 740

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

浅析微信支付:申请退款、退款回调接口、查询退款

本文是【浅析微信支付】系列文章的第八篇,主要讲解商户如何处理微信申请退款、退款回调、查询退款接口,其中有一些坑的地方,会着重强调。 浅析微信支付系列已经更新七篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:查询订单和关闭订单 浅析微信支付:支付结果通知 浅析微信支付:统一下单接口 在实际场景中,申请退款和退款回调接口是比较常用到...

weixin_34122548的博客 974

AES-256-ECB PKCS7Padding 解密 微信退款接口

不说别的了,直接说解密 1解密方式 解密步骤如下: (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)–&amp;amp;amp;amp;amp;gt;账户设置–&amp;amp;amp;amp;amp;gt;API安全–&amp;amp;amp;amp;amp;gt;密钥设置 ) (3)用key*对加密串B做AES-256-ECB解密(PKCS7Padding)

彦楠的博客 6907

微信退款结果通知报文AES解密

最近做微信支付涉及到退款,查看官方文档,发现通知报文是加密的,解密方式如下: (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 ) (3)用key*对加密串B做AES解密 这里分别涉及到了BASE64,MD5,AES

u010660575的博客 1万+

c# .net 微信支付v3,支付结果通知处理;含AEAD_AES_256_GCM解码

c# .net 微信支付v3,支付结果通知处理;含AEAD_AES_256_GCM解码

橙-极纪元-JJYCheng 5229

加密算法AES256的ECB-PKCS7Padding加密

转载自:http://blog.youkuaiyun.com/firas/article/details/47043335 主要代码如下: [java] view plain copy import java.security.Security;      import javax.crypto.Cipher;   import javax.crypto

lan_学习分享 1万+

微信接口java解密_java使用AES-256-ECB(PKCS7Padding)解密——微信支付退款通知接口指定解密方式...

1.场景在做微信支付退款通知接口时,微信对通知的内容做了加密,并且指定用 AES256 解密,官方指定的解密方式如下:2.导包org.bouncycastlebcprov-jdk15on1.60org.jasyptjasypt1.9.33.解密说明:方法中参数 reqInfo 就是退款结果通知接口中的req_info 字段值private String descrypt(String reqIn...

weixin_39598308的博客 522

微信支付退款通知解密(req_info)

官方给出的开发文档解密步骤如下: (1)对加密串A做base64解码,得到加密串B (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 ) (3)用key*对加密串B做AES-256-ECB解密(PKCS7Padding) 准备工作: 依赖: <dependency> <groupId>org.bouncycas..

weixin_43761722的博客 1657

微信支付退款通知信息解密

正常的解密: https://www.jianshu.com/p/6d3259e88b80 我在解密的过程中一直说我需要解密的信息错误。 我从解密的数据无非想拿到我申请退款的订单编号和退款编号。这个使我们自己的。 于是我在回调地址上拼接了我需要的信息。让微信方通过路径给我反馈回来。 @ApiOperation(value = "微信支付异步通知") @Reques...

weixin_30329623的博客 208
上一篇: 微信支付-缺少参数timeStamp
下一篇: mac安装gradle
李帅康
博客等级 码龄11年 30粉丝 141原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值