当前位置: 首页 > 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)。

http://www.dtcms.com/a/242479.html

相关文章:

  • 入门机器学习需要的统计基础
  • 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类的实现)
  • 接口测试中缓存处理策略
  • Suna 开源 AI Agent 安装配置过程全解析(输出与交互详解)
  • 国产具身大模型首入汽车工厂,全场景验证开启工业智能新阶段
  • Vuex 自动化生成工具
  • BeckHoff <--> 基恩士(CV-X300)三维机械手视觉系统的通讯 控制
  • 在GIS 工作流中实现数据处理
  • 百度之星2021——BD202104 萌新
  • 计算机行业光辉开始暗淡
  • 半导体设备基本通信标准介绍
  • HTML的初步学习