【Java 错误与异常】微信支付出现 llegal key size 大坑(已解决)

项目场景:

项目场景:使用微信支付平台的 native 方式实现微信支付功能。


问题描述

在获取签名验证器的代码中一直出现 Illegal key size 异常
代码如下【代码不用看,代码没错】:

    /**
     * 获取签名验证器
     * 签名验证器: 用于验签的对象
     */
    @Bean
    public ScheduledUpdateCertificatesVerifier getVerifier(){

        log.info("获取签名验证器");

        //获取商户私钥
        PrivateKey privateKey = getPrivateKey(privateKeyPath);

        //私钥签名对象
        PrivateKeySigner privateKeySigner = new PrivateKeySigner(mchSerialNo, privateKey);

        //身份认证对象
        WechatPay2Credentials wechatPay2Credentials = new WechatPay2Credentials(mchId, privateKeySigner);

        // 使用定时更新的签名验证器,不需要传入证书
        ScheduledUpdateCertificatesVerifier verifier = new ScheduledUpdateCertificatesVerifier(
                wechatPay2Credentials,
                // 异常定位到这里, 说 apiV3Key 的长度有问题
                apiV3Key.getBytes(StandardCharsets.UTF_8));

        return verifier;
    }

在这里插入图片描述

原因分析:

我猜想可能是我在配置文件中无意间添加了【空格】,但并不是。
我猜想是不是我代码写错了?我拿老师验证成功的代码测试,还是有 Illegal key size 问题。
说明并不是代码的问题

这是 Java 运行时环境的限制。当密钥大于128位的时候会抛出 java.security.InvalidKeyException: Illegal key size 异常。


解决方案:

在这里插入图片描述
jdk 1.8.0_131\jre\lib\security】文件夹下的 local_policy.jarUS_export_policy.jar 文件(如上图)限制密钥长度不能大于128位。

下载下面的百度网盘中的内容,用网盘中的 local_policy.jarUS_export_policy.jar 文件覆盖原来【jdk 1.8.0_131\jre\lib\security】文件夹下的 local_policy.jarUS_export_policy.jar 文件

链接:https://pan.baidu.com/s/1VZqxU6WMU_TuVzEmxk5e_A 
提取码:ghye

如果你安装的 jdk 不是 1.8 版,需要在网上下载其他版本的哦!

如果解决了您的问题,点个赞吧!

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jagochan 张国庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值