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

【微信支付通知】对resource解密 AEAD_AES_256_GCM算法工具类

微信支付JSPIA支付-支付通知中,对resource解密

import javax.crypto.Cipher;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import java.util.Base64;public class AEADDecryption {public static String decrypt(String key, String nonce, String associatedData, String ciphertext) throws Exception {byte[] keyBytes = key.getBytes();byte[] nonceBytes = nonce.getBytes();byte[] associatedDataBytes = associatedData.getBytes();byte[] ciphertextBytes = Base64.getDecoder().decode(ciphertext);Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");Key secretKey = new SecretKeySpec(keyBytes, "AES");GCMParameterSpec gcmParameterSpec = new GCMParameterSpec(128, nonceBytes);cipher.init(Cipher.DECRYPT_MODE, secretKey, gcmParameterSpec);cipher.updateAAD(associatedDataBytes);byte[] decryptedBytes = cipher.doFinal(ciphertextBytes);return new String(decryptedBytes);}public static void main(String[] args) throws Exception {String key = "v3密钥";String nonce = "iKtWOA7GL44Z";String associatedData = "transaction";String ciphertext = "CTef/rBxYzeKtxpZrGMjGrCGGNumi9iwd47utMPa6d9w3N6Af9mKNcfI8+1s3GZJgnCN0XaBDzIN2D63gYbfByG1eOEyMZF6oK75wj5QRq73lXotTANPxJVYhGxl+ldJjYlrpYuWSSS9pgSaNLRZMzxmK6WMCipt3eZFmVGyHhTKyLSAYdMuxlXngfqF4mMegf0z9sTEMv/vjBNychKVHJAWceqpMvpqbVXzbIa4n601EkFhhl1wXkx7+8rNRzkiHjutXWKQvBFzRe13GTSfVBpFZVcaWHhqcyNxcRtrMi3TQll5lKi2g3YIQ1yO2DTmlfPuzTG6ebYAFn6lP/tJ/KEwl+JYx77Ql8xhkQ9YIXz33Sbd4TCgw2gv2SgpfNrg3X3L6Kldo7iPrJ6OqE2nrdsNX9gjwMbDWhAWopedXEI/dccrZy9h/f25fpqGEdqVzbX5w0Yg4DtG1WnyXascFXgDzAGXYzuiJFl4egtsl5Qirh5wyUJUoDe7zKJDXocgmTSIkFn9jeuEitlaECqzElS44j8wOXcn3uizOvjfihFAQAqTANT0oFFHk=";String plaintext = decrypt(key, nonce, associatedData, ciphertext);System.out.println("Decrypted plaintext: " + plaintext);}
}
http://www.lryc.cn/news/230407.html

相关文章:

  • JVM虚拟机:垃圾回收之三色标记
  • 唯坚持而已
  • 【大语言模型】Docker部署清华大学ChatGLM3教程
  • 详解 KEIL C51 软件的使用·设置工程·编绎与连接程序
  • 小程序实现语音识别功能
  • 判断两层对象中是否有空的value值
  • 【SQLite】环境安装
  • 【QT】飞机大战
  • linux最全基础入门命令(简单明了建议收藏)
  • dgl 的cuda 版本 环境配置(dgl cuda 版本库无法使用问题解决)
  • 回文数和复利的威力(C#)
  • 【Java】面向对象程序设计 课程笔记 Java核心类
  • 16个值得推荐的.NET ORM框架
  • Git 进阶使用
  • 【微软技术栈】C#.NET 泛型数学
  • 【nlp】1.1文本处理的基本方法
  • 流量分析(信息安全铁人三项赛分区赛2-5.18)
  • 云服务器如何选?腾讯云2核2G3M云服务器88元一年!
  • 【Hello Go】初识Go语言
  • 计算机视觉:人脸识别与检测
  • 【NLP】理解 Llama2:KV 缓存、分组查询注意力、旋转嵌入等
  • ctyunos 与 openeuler
  • 跟着GPT学设计模式之工厂模式
  • VScode+python开发,多个解释器切换问题
  • c++ 经典服务器开源项目Tinywebserver如何运行
  • c++之xml的创建,增删改查
  • 【前端开发】JS Vue React中的通用递归函数
  • 【python 生成器 面试必备】yield关键字,协程必知必会系列文章--自己控制程序调度,体验做上帝的感觉 1
  • 头哥实践平台之MapReduce基础实战
  • Linux基础知识——tmux和vim