首页 > 其他分享 >AES-256-ECB PKCS7Padding 解密 微信退款接口

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

时间:2023-09-23 14:34:55浏览次数:54  
标签:AES return ECB 微信 Exception throws static public String

微信退款通知

https://pay.weixin.qq.com/wiki/doc/api/wxpay/ch/pay/OfficialPayMent/chapter8_8.shtml

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

需要的pom

<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
		<dependency>
		    <groupId>commons-codec</groupId>
		    <artifactId>commons-codec</artifactId>
		    <version>1.11</version><!--$NO-MVN-MAN-VER$-->
		</dependency>
		
	<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on -->
		<dependency>
		    <groupId>org.bouncycastle</groupId>
		    <artifactId>bcprov-jdk15on</artifactId>
		    <version>1.60</version>
		</dependency>

1 Base64解密

import org.apache.commons.codec.binary.Base64;
public class BASE64Util {
	 /**
	  * 进行Base64解密 
	  * @param binaryData
	  * @return
	  * @throws Exception
	  */
    public static byte[] decodeBase64(String binaryData) throws Exception {  
    	  byte[] result = Base64.decodeBase64(binaryData.getBytes());  
        return  result;  
    }  
    /**
     * 进行Base64加密
     * @param binaryData
     * @return
     * @throws Exception
     */
    public static byte[] encodeBase64(byte[] binaryData) throws Exception {  
  	  byte[] result = Base64.encodeBase64(binaryData);
      return  result;  
  }  
}

2,MD5加密

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {

	 public static String MD532(String plainText) {  
	        try {  
	            MessageDigest md = MessageDigest.getInstance("MD5");  
	            md.update(plainText.getBytes());  
	            byte b[] = md.digest();  
	            int i;  
	            StringBuffer buf = new StringBuffer("");  
	            for (int offset = 0; offset < b.length; offset++) {  
	                i = b[offset];  
	                if (i < 0)  
	                    i += 256;  
	                if (i < 16)  
	                    buf.append("0");  
	                buf.append(Integer.toHexString(i));  
	            }  
	            //32位加密  
	            return buf.toString();  
	            // 16位的加密  
	            //return buf.toString().substring(8, 24);  
	        } catch (NoSuchAlgorithmException e) {  
	            e.printStackTrace();  
	            return null;  
	        }  
	    }  
	 /**
	  * 大写MD5
	  * @param plainText
	  * @return
	  */
	 public static String dxMD532(String plainText) {
		return MD5Util.MD532(plainText).toUpperCase();  
		 
	 }
	 
		public static void main(String[] args) {
			// TODO Auto-generated method stub
			System.out.println("111");
			System.out.println(MD5Util.MD532("1212"));
			System.out.println(MD5Util.dxMD532("1212"));
			
		}
}

3,对req_info 做AES-256-ECB解密(PKCS7Padding)

import java.security.Security;
import java.util.Map;

import javax.crypto.Cipher;  
import javax.crypto.spec.SecretKeySpec;  
  
import org.bouncycastle.jce.provider.BouncyCastleProvider;  
 
 
public class AESUtil {
	
	/**
	 * 密钥算法
	 */
	private static final String ALGORITHM = "AES";
	/**
	 * 加解密算法/工作模式/填充方式
	 */
	private static final String ALGORITHM_MODE_PADDING = "AES/ECB/PKCS7Padding";
	
	static {
		//Security.addProvider(new BouncyCastleProvider());
		Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
	}
	
	/**
	 * AES加密
	 * 
	 * @param data
	 * @return
	 * @throws Exception
	 */
	public static String encryptData(String data,String key) throws Exception {
		// 创建密码器
		Cipher cipher = Cipher.getInstance(ALGORITHM_MODE_PADDING, "BC");
		SecretKeySpec secretKeySpec = new SecretKeySpec(MD5Util.MD532(key).getBytes(), ALGORITHM);
		// 初始化
		cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
		return new String(BASE64Util.encodeBase64(cipher.doFinal(data.getBytes())));
	}
 
	/**
	 * AES解密
	 * 
	 * @param base64Data
	 * @return
	 * @throws Exception
	 */
	public static String decryptData(String base64Data,String key) throws Exception {
		Cipher cipher = Cipher.getInstance(ALGORITHM_MODE_PADDING, "BC");
		SecretKeySpec secretKeySpec = new SecretKeySpec(MD5Util.MD532(key).getBytes(), ALGORITHM);
		cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
		return new String(cipher.doFinal(BASE64Util.decodeBase64(base64Data)));
	}
 
	public static void main(String[] args) throws Exception {
		
		String A="wvm81DNoEyMiBbF7gjHh51JWMpdVsxwGuQ/Ej4DcGR408/bJzsu0zsCGcm9t3OMuDCoI+oXQKZBX/iBFo/+TfOf0w8YMbeDZELHUBShN+Pw7It0rzsBY0/ScN9EFRAg9uFE5AKFzlEMdDnHdEk5IX8bn+q/iNyuZ20Zfatx/n1u1r/+IDKtrxUDyPpRxzeHlc0eIzN7tNfnW+BjWenmlK+/qzqb58s8VEJ8vwKjXnIuBRUnt8IXouCqR4pZjQ7VY/pasfJcb8wBvCMOJ8szpoZv2kB0UglhQ/f8VgMNVzSd7Jlbr/Gvikb4reFPoZuSQgCkL0wcT1txmPqF2hNd7Ct91Gp3CYwjGo1DSIl6UVedPYb9XRh2vhUkmn1L9ri4VtXvKxMZeda+gzcpzFkQtroQUHCtKvWYyDUzTIDT2uLvyusZLPrhI1t3r7Gqu4b7J9aGADUuCh4CmeoR5eIcOoagtiNcrd6H5HBnYuqHCw6mf4/9/+3E60SOkiTr2hhijwkaqif7r2jpwluHBZ2bxQ896Lnlh7WiwFZ6KxVL9TwKTUa0EvMW+xcT7Sh4hawjgEuZCzOjixNl1tcfqwBGxJDMHODTV2GBX7uHntPCGfiMbuuU/0CVn5VGuJETQXmOM7KT6kaK22TCJj7d3yw7dtROSJ2WIg7O5ieodfHYSrBlw3ZLnaLUx63K0BcJCrNUYJ8tO28x3swgVrNZHcQccsR/35rdrUuyd2E1CCdFW2/XnniY8ZJSrd33Xy+9dCjR5almlJwyLWAXHTIQJHMQjs5yhBNL9PJRYk9lxb3DulIAS37fHEzKiuNm8aA46SMz7EsDnTYdkPA7I+vf3GED6IiKeTjLD4z/LBN2FvUXxwmInaGAZJjZeWUa3cUSJCR+hyxRvAcUwWr9w1Yu+KHqXIAbMdrPYO+SCnK9nDBOVO/JL62Nb5gV5xpAIpeJW9dvABDPpEJyxtPTmL3J+5KPF0fNt678eLbYHJdp731j3JojVYvNx++eDJGg9LxLT88ECqFX1II+x2FiCSt2MG2JTR1OlWCtOMrpO1e5lzg0ScSU=";
		A=AESUtil.decryptData(A,"3c6e0b8a9c15224a8228b9a98ca1531d");
		System.out.println(A);

	}
 
}

标签:AES,return,ECB,微信,Exception,throws,static,public,String
From: https://blog.51cto.com/song/7578037

相关文章

  • ubuntu上使用微信界面太小
    一开始:小小的也很可爱呢后来使用命令调整envWINEPREFIX="$HOME/.ukylin-wine/wechat"/usr/bin/ukylin-winewinecfg 进入wine设置界面将分辨率调高,设置虚拟桌面,就可以勉勉强强用了。 还是很难用!!!哭......
  • 微信获取用户信息
    微信有2个ACCESS_TOKEN,1,基础接口的token获取接口是 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 2,用户网页授权access_token获取接口地址是 https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&s......
  • 超越钉钉与企业微信:如何选择一款更适合企业的私有化即时通讯软件
    在现代企业中,高效的沟通与协作是成功的关键。钉钉与企业微信作为知名的即时通讯软件,为企业带来了许多便利。然而,在一些特定场景和对数据安全性要求更高的企业来说,选择一款更适合自身需求的私有化即时通讯软件才是最佳选择。WorkPlus作为领先的品牌,致力于提供满足企业需求的私有化即......
  • 微信小程序:获取不到表单数据
    今天碰到了一件让我怀疑人生的事情:获取不到表单的数据,但是productName能获取到数据,其他的都获取不到数据,而且他们的写法一模一样。<viewclass="contain"style="margin-bottom:200rpx;"><formbindsubmit="formSubmit"><viewclass="row2"sty......
  • 微信小程序全局变量(globalData)和缓存(StorageSync)的区别和用法
    globalData和storage的区别一、app.globalData是全局变量,下次进入的时候,就要重新获取,一般用于:1、保存一些可能涉及安全类的数据,例如资源类,每次需要很准确的,就建议用全局变量。2、全局变量每次关闭小程序重新打开的时候,都会进行初始化更新。二、缓存(StorageSync)本地存储,storage......
  • ABAP-AES加密解密
    1REPORTytestdzp.23FORMb.45DATA:lv_encryptTYPEstring."加密前的string类型6DATA:lv_encrypt_xTYPExstring."加密前的xstring类型78DATA:lv_encrypt_afterTYPEstring."加密后的string类型9DATA:lv_encrypt_afte......
  • 企业微信机器人Javascript调用例子
    constkey=""constoWX_URL='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='+key;constsent_msg={'msgtype':'text','text':{......
  • "最佳选择:独立私有部署的智能AI客服系统,适用于商城客服、公众号小程序客服和企业微信
    唯一客服系统推荐随着互联网的迅猛发展,越来越多的企业开始意识到提供良好的客户服务对于业务的重要性。而一个高效、多功能的在线客服系统成为了现代企业不可或缺的一部分。在此,我向大家推荐一款功能强大、易于使用的唯一客服系统——gofly.v1kf.com。以下将为您介绍该系统的一......
  • "强大的在线客服系统解决方案,网站客服源码下载,微信客服一键接入,私有部署可定制,在线客
    在线客服系统的重要性及推荐使用Gofly.v1kf.com在现代商务环境中,提供高质量的客户服务是企业获得成功的关键之一。随着互联网的快速发展,越来越多的企业认识到,拥有一个高效的在线客服系统对于与客户进行快速、便捷的沟通和解决问题至关重要。在选择适合自己企业的在线客服系统时,需......
  • 提供最好用的在线客服系统源码下载,支持独立私有部署,适用于网站、微信、公众号小程序和
    唯一客服系统推荐:gofly.v1kf.com在当今资讯爆炸的时代,对于企业来说,提供良好的客户服务已经成为了一项不可或缺的竞争优势。而在线客服系统无疑成为了企业与客户之间进行沟通和交流的重要工具。本文将向您推荐一款功能强大、易于使用且高度灵活的唯一客服系统——gofly.v1kf.com。......