微信支付 V3开发中报错

发布时间:2023-05-19 09:17:48

报错

IllegalArgumentException: java.security.InvalidKeyException: Illegal key size
错误的原因

使用 AES 加解密时,遇到加解密时 128 当位密钥加解密时,没有特殊处理;

但是,在使用中 256 当位密钥加解密时,如果不进行特殊处理,就会出现这种异常 java.security.InvalidKeyException: Illegal key size。

JRE 中自带的 “local_policy.jar” 和 “US_export_policy.jar” 是支持 128 当我们需要使用位密钥的加密算法时 256 位密钥算法已超出其范围,无法支持。

处理方案

如果不方便覆盖文件,可以在代码中反射修改,并在main中调用方法

/**     * 去除JCE限制     */    private static void removeJceLimit()    {        //去除JCE加密限制,仅限于Java1.8        try {            Field field = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");            field.setAccessible(true);             Field modifiersField = Field.class.getDeclaredField("modifiers");            modifiersField.setAccessible(true);            modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);             field.set(null, false);             LOGGER.info("============= remove the key size restriction Success =============");         } catch (ClassNotFoundException | NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException ex) {            ex.printStackTrace(System.err);        }    }

上一篇 MySQL之cross,inner,left和right详解
下一篇 matlab zeros和ones

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题