当前位置: 首页 > 图灵资讯 > 技术篇> 微信支付 V3开发中报错

微信支付 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);        }    }