当前位置: 首页 > news >正文

微信小程序消息推送解密

package com.test.main.b2b;import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Arrays;/*** @author * @version 1.0* @description: 解谜微信小程序消息通知* @date 2025/2/20 15:29*/
public class 支付回调解密 {// EncodingAESKey(消息加密密钥)public static String encodingAesKey = "sdIeXprnCzbVmDIp";// Encrypt Msgpublic static String encryptedData = "urMQfiTkA+nLIV/gpAxwQaFurMQfiTkA+nLIV/gpAxwQaFurMQfiTkA+nLIV/gpAxwQaFurMQfiTkA+nLIV/gpAxwQaFurMQfiTkA+nLIV/gpAxwQaFurMQfiTkA+nLIV/gpAxwQaF";public static void main(String[] args) throws Exception {// 请替换成你的真实数据String decrypt = decrypt(encryptedData, encodingAesKey);System.out.println(decrypt);}public static String decrypt(String encryptedMsg, String encodingAesKey) throws Exception {// Base64解码密钥(微信EncodingAESKey是Base64编码的)byte[] aesKey = Base64.decodeBase64(encodingAesKey + "=");byte[] original;try {// 设置解密模式为AES的CBC模式Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");SecretKeySpec key_spec = new SecretKeySpec(aesKey, "AES");IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(aesKey, 0, 16));cipher.init(Cipher.DECRYPT_MODE, key_spec, iv);// 使用BASE64对密文进行解码byte[] encrypted = Base64.decodeBase64(encryptedMsg);// 解密original = cipher.doFinal(encrypted);} catch (Exception e) {e.printStackTrace();throw new AesException(AesException.DecryptAESError);}String xmlContent;try {// 去除补位字符byte[] bytes = PKCS7Encoder.decode(original);// 分离16位随机字符串,网络字节序和AppIdbyte[] networkOrder = Arrays.copyOfRange(bytes, 16, 20);int xmlLength = recoverNetworkBytesOrder(networkOrder);xmlContent = new String(Arrays.copyOfRange(bytes, 20, 20 + xmlLength), "UTF-8");} catch (Exception e) {e.printStackTrace();throw new AesException(AesException.IllegalBuffer);}return xmlContent;}// 还原4个字节的网络字节序static int recoverNetworkBytesOrder(byte[] orderBytes) {int sourceNumber = 0;for (int i = 0; i < 4; i++) {sourceNumber <<= 8;sourceNumber |= orderBytes[i] & 0xff;}return sourceNumber;}
}
http://www.lryc.cn/news/540125.html

相关文章:

  • 《道德经的现代智慧:解码生活与商业的底层逻辑2》
  • 通过监督微调提升多语言大语言模型性能
  • 用deepseek学大模型05逻辑回归
  • 图解循环神经网络(RNN)
  • vue文件没有name属性怎么被调用
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-build.py
  • alt+tab切换导致linux桌面卡死的急救方案
  • Spark(2)linux和简单命令
  • 如何在Windows下使用Ollama本地部署DeepSeek R1
  • 【Content-Type详解、Postman中binary格式、json格式数据转原始二进制流等】
  • spring boot知识点3
  • Dart 3.5语法 28-29
  • 利用AFE+MCU构建电池管理系统(BMS)
  • 【教学类-89-06】20250220新年篇05——元宵节灯笼
  • C++ Primer 类的静态成员
  • 【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记
  • 【科研绘图系列】R语言绘制小提琴图、散点图和韦恩图(violin scatter plot Venn)
  • Linux中POSIX应用场景
  • 量子算法导论
  • nasm - BasicWindow_64
  • SpringBoot:SSL证书部署+SpringBoot实现HTTPS安全访问
  • selenium爬取苏宁易购平台某产品的评论
  • Spark提交任务
  • 游戏引擎学习第113天
  • token是什么
  • 23. AI-大语言模型-DeepSeek赋能开发-Spring AI集成
  • IPv6报头40字节具体怎么分配的?
  • 驱动开发、移植
  • BFS与Flood Fill:算法原理、实现细节与复杂度分析
  • 计算机网络基础杂谈(局域网、ip、子网掩码、网关、DNS)