当前位置: 首页 > news >正文

Illegal key size or default parameters问题解决

这个错误,常出现在 Java 运行环境中使用加密(如 AES)时,是因为当前的 Java 环境 不支持使用大于 128 位密钥的加密算法(比如 AES-256),因为默认 JDK 出于政策限制(如美国出口限制)默认只支持 128 位密钥

解决方案

方法一:更换为支持 256 位加密的 JDK(推荐)

Java 8u161 之后的版本开始,Oracle 官方已经取消了这个限制。所以你可以把Jar包升级到这个版本以上就可以了。一般来说新版本好像是默认开启的,如果没开启可以按以下步骤来:

操作步骤:

  1. 找到你的 JDK 安装目录,打开/jre/lib/security/java.security

    JAVA_HOME/jre/lib/security/java.security 
  2. 打开 java.security 文件,搜索:

    crypto.policy=
  3. 改成:

    crypto.policy=unlimited 
  4. 保存,重启程序。

方法二:下载JCE

如果没法升级Jar包的版本,那可以下载JCE包。

JDK8的在这:

JCE Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8 Download

下载下来之后,还是一样打开 JDK安装目录 打开 /jre/lib/security 目录,里面会有两个Jar包:local_policy.jar,US_export_policy.jar。把下载下来的同名Jar包覆盖进去就行了。

方法三:换成 128 位的密钥

当然如果你只是临时测试,不要求加密强度,可以把密钥长度限制在 128 位

如何确认你当前 JDK 支持多少位密钥?

可以运行以下代码测试:

import javax.crypto.Cipher;public class CheckCryptoPolicy {public static void main(String[] args) throws Exception {int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");System.out.println("Max AES key length: " + maxKeyLen);}
}

输出: 如果是 128,说明你当前的 JDK 只支持 128 位密钥。 如果是 2147483647,说明支持无限长度(即支持 AES-256)。

相关文章:

  • 入门机器学习需要的统计基础
  • 55. Jump Game
  • 二十、【用户管理与权限 - 篇二】前端交互:实现用户管理界面
  • pytorch-frame开源程序适用于 PyTorch 的表格深度学习库,一个模块化深度学习框架,用于在异构表格数据上构建神经网络模型。
  • leetcode0934. 最短的桥-medium
  • mac文件整理利器 Hazel 使用教程
  • (十)学生端搭建
  • 【TinyWebServer】HTTP连接处理
  • ntp时间同步服务
  • Admin.Net中的消息通信SignalR解释
  • WebLogic简介
  • 架空线路图像视频监测装置
  • 什么是MongoDB
  • http协议同时传输文本和数据的新理解
  • Spring Boot 如何自动配置 MongoDB 连接?可以自定义哪些配置?
  • Dynadot邮箱工具指南(六):将域名邮箱添加至网易邮箱大师
  • MongoDB 数据库应用
  • 【第二十三章 IAP】
  • 【DAY45】 Tensorboard使用介绍
  • 手写muduo网络库(二):文件描述符fd及其事件的封装(Channel类的实现)
  • kuler网站/地推放单平台
  • 不锈钢网站哪家最专业/网络推广项目代理
  • 成都网站设计培训/营业推广经典案例
  • 厦门网站开发平台/seo的重要性
  • 餐饮公司最好的网站建设/品牌推广文案
  • 论坛网页模板/百度推广seo优化