微信支付AES加解密算法
微信支付AES加解密算法
AES256/ECB/PKCS7Padding
一、AES
高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法
二、实现
package com.wx;import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.Security;
import java.util.Base64;public class AESUtil {/*** 密钥算法*/private static final String ALGORITHM = "AES";/*** 加解密算法/工作模式/填充方式*/private static final String ALGORITHM_MODE_PADDING = "AES/ECB/PKCS7Padding";private static final String APIKEY = "你的 api key";/*** AES解密** @param base64Data base64* @return string*/public static String decryptData(String base64Data, String lowMad5Key) throws Exception {SecretKeySpec key = new SecretKeySpec(lowMad5Key.getBytes(), ALGORITHM);Security.addProvider(new BouncyCastleProvider());Cipher cipher = Cipher.getInstance(ALGORITHM_MODE_PADDING);cipher.init(Cipher.DECRYPT_MODE, key);Base64.Decoder decoder = Base64.getDecoder();String newData = new String(decoder.decode(base64Data), StandardCharsets.ISO_8859_1);return new String(cipher.doFinal(newData.getBytes(StandardCharsets.ISO_8859_1)), StandardCharsets.UTF_8);}public static String MD5(String data) throws Exception {MessageDigest md = MessageDigest.getInstance("MD5");byte[] array = md.digest(data.getBytes(StandardCharsets.UTF_8));StringBuilder sb = new StringBuilder();byte[] var4 = array;int var5 = array.length;for (int var6 = 0; var6 < var5; ++var6) {byte item = var4[var6];sb.append(Integer.toHexString(item & 255 | 256).substring(1, 3));}return sb.toString().toUpperCase();}/*** 退款回调信息需要解密读取 调用即可*/public static String mapResult(String info) throws Exception{return decryptData(info, AESUtil.MD5(APIKEY).toLowerCase());}}
简单易读,通俗易懂。。。好用
微信支付AES加解密算法相关推荐
- php aes 256 加解密,PHP完整的AES加解密算法使用及例子(256位)
依赖PHP自身的mcrypt扩展 class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default_secret_k ...
- C语言实现AES加解密算法
C语言实现AES加解密算法 AES加解密 AES加解密 #include <stdio.h> #include <stdint.h> #include <memory.h ...
- Android金融支付常见加解密算法及安全防护
引言 因为本人从事的金融 IC 卡和移动支付相关的开发工作,在日常研发过程中,对 APP 信息安全防护方面尤为重视,所以现总结下金融支付相关的加解密算法以及常见的安全防范措施. Android 端常见 ...
- Python中的AES加解密算法
AES加密的参数及其条件:这个AES加密的主要坑就在于这些条件,首先AES加密有几个参数 秘钥:加密的时候用秘钥,解密的时候需要同样的秘钥才能解出来 明文:需要加密的内容 模式:aes 加密常用的有E ...
- AES加解密算法详解
0 AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES).AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准. 根据使用的密码长度,AES最常见的有3种方案,用以适应 ...
- java aes ebc_Delphi XE2+标准AES加解密算法(AES/EBC,CBC/PKCS5Padding-base64)
[实例简介] 实现了AES/ECB/PKCS5Padding.AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充.是标准的AES算法,支持在线AES加解密网站互 ...
- php5.0 aes加解密,PHP的aes加解密算法
说明: 1. php的aes算法,加密时会存在空格,0,\0等方式进行补长,所以解密后需要进行trim操作,才能得到原数据串 2. aes加密后进行base64_encode,但是解密时,直接用aes ...
- 微信支付AES解密工具类
WechatAESUtil类 public class WechatAESUtil {/*** 密钥算法*/private static final String ALGORITHM = " ...
- 程序猿成长之路番外篇之前后端加解密(rsa+aes混合加解密算法)
今年国庆前夕接手一个外部项目,说是要保障接口数据安全,数据安全相对容易些,接口安全嘛emmmmm, 这个要考虑加解密算法.白名单之类的问题了.于是打算今天搞一期接口安全为题的成长之路番外篇. 为什么要 ...
最新文章
- 关于机器学习,不可不知的15个概念
- LNMP - Nginx配置防盗链
- c#启动单个程序(互斥机制)
- js 替换任意字符串中间几位为*星号
- 前端学习(2411):name属性的作用
- 【POJ - 3177】Redundant Paths(边双连通分量,去重边)
- idea,eclipse创建多模块项目
- java 百度地图 经纬度_Java百度地图经纬度纠偏
- NetscalerSSL证书的导入和link
- 封装继承多态的关联性
- scrapy持久化存储
- 数学分析高等代数考研试题考研真题汇总目录2020-01-10更新
- vlookup匹配的文字显示0_Excel | VLOOKUP函数使用详解
- plt.subplots_adjust(wspace=0.01, hspace=0.01)
- FIN_WAIT_1/FIN_WAIT_2
- 我的iMac苹果电脑的系统崩溃和恢复
- php ffmpeg 转码mp4,PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
- DeepLearning with Pytorch Chapter04
- springcloud项目读取不到application.properties
- 一本修炼秘籍,带你打穿文件上传的21层妖塔(1)