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

1.场景

在做微信支付退款通知接口时,微信对通知的内容做了加密,并且指定用 AES256 解密,官方指定的解密方式如下:

c0afb63b7a800390bc3d12d635d2aa55.png

2.导包

org.bouncycastle

bcprov-jdk15on

1.60

org.jasypt

jasypt

1.9.3

3.解密

说明:方法中参数 reqInfo 就是退款结果通知接口中的 req_info 字段值

private String descrypt(String reqInfo) throwsNoSuchPaddingException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {byte[] reqInfoB =Base64.decodeBase64(reqInfo);

String key_=DigestUtils.md5Hex(WXPayConfig.getInstance().getKey()).toLowerCase();if (Security.getProvider("BC") == null){

Security.addProvider(newBouncyCastleProvider());

}

Cipher cipher= Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");

SecretKeySpec secretKeySpec= new SecretKeySpec(key_.getBytes(), "AES");

cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);return newString(cipher.doFinal(reqInfoB));

}

4.结果

3bd8249ec245a60b4411b85a5c823ca1.png

5.上述过程之后在win本地运行没问题了,但是放到 linux 之后报错如下:

java.security.InvalidKeyException: Illegal key size or default parameters

最终还是按网友的方法解决:替换jre包:local_policy.jar,US_export_policy.jar

5.1.下载

需要注意的是:替换的jar包版本需要与jre版本一致,各个版本包连接

5.2.替换路径

%JAVE_HOME%\jre\lib\security

6.参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值