首页 > 编程语言 >idea运行java项目提示异常: java.security.InvalidKeyException: Illegal key size

idea运行java项目提示异常: java.security.InvalidKeyException: Illegal key size

时间:2023-08-24 11:45:22浏览次数:43  
标签:类库 Java Illegal InvalidKeyException jar java security

idea运行java项目提示异常: java.security.InvalidKeyException: Illegal key size

news/2023/8/17 15:55:43

idea运行java项目提示异常:java.lang.IllegalArgumentException: java.security.InvalidKeyException: Illegal key size

参考:java.security.InvalidKeyException: Illegal key size_gqltt的博客-CSDN博客

 

产生错误原因:为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行加密,然后等对方拿到后再解密使用。我们在使用AES加解密的时候,在遇到128位密钥加解密的时候,没有进行什么特殊处理;然而,在使用256位密钥加解密的时候,如果不进行特殊处理的话,往往会出现这个异常java.security.InvalidKeyException: Illegal key size。

为什么会产生这样的错误?

我们做Java开发,或是Android开发,都会先在电脑上安装JDK(Java Development Kit) 并配置环境变量,JDK也就是 Java 语言的软件开发工具包,JDK中包含有JRE(Java Runtime Environment,即:Java运行环境),JRE中包括Java虚拟机(Java Virtual Machine)、Java核心类库和支持文件,而我们今天要说的主角就在Java的核心类库中。在Java的核心类库中有一个JCE(Java Cryptography Extension),JCE是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现,所以这个是实现加密解密的重要类库。

在我们安装的JRE目录下有这样一个文件夹:%JAVE_HOME%\jre\lib\security(%JAVE_HOME%是自己电脑的Java路径,一版默认是:C:\Program Files\Java,具体看自己当时安装JDK和JRE时选择的路径是什么),其中包含有两个.jar文件:“local_policy.jar ”和“US_export_policy.jar”,也就是我们平时说的jar包,再通俗一点说就是Java中包含的类库(Sun公司的程序大牛封装的类库,供使用Java开发的程序员使用),这两个jar包就是我们JCE中的核心类库了。JRE中自带的“local_policy.jar ”和“US_export_policy.jar”是支持128位密钥的加密算法,而当我们要使用256位密钥算法的时候,已经超出它的范围,无法支持,所以才会报:“java.security.InvalidKeyException: Illegal key size or default parameters”的异常。那么我们怎么解决呢?

如何解决?

 

解决方法:1、去官方下载JCE无限制权限策略文件

JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 

 

下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件。

如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。

 

然后再次运行java项目,就正常了。

标签:类库,Java,Illegal,InvalidKeyException,jar,java,security
From: https://www.cnblogs.com/jie-2019/p/17653793.html

相关文章

  • java实现大文件上传功能
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm"action="${pageContext.request.contextPath}/UploadServlet"method="post"e......
  • 【GiraKoo】Android Studio编译时,提示java.nio.file.AccessDeniedException
    【问题解决】AndroidStudio编译时,提示java.nio.file.AccessDeniedException在使用AndroidStudio进行编译时,提示编译错误java.nio.file.AccessDeniedException。原因时当前使用Debug模式,停在断点上。导致编译程序无法替换被占用目标文件,输出该异常。【环境】AndroidStudio【......
  • 腾讯云短信发送【java】
    先去官网申请secretId,secretKey,然后创建对应的模板maven引入包<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><!--gotohttps://search.maven.org/search?q=tencentcloud-sdk-javaandgetthe......
  • java实现大文件上传解决方案
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须......
  • 20230710 java.lang.SuppressWarnings
    介绍java.lang.SuppressWarnings声明@Target({TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,MODULE})@Retention(RetentionPolicy.SOURCE)public@interfaceSuppressWarnings阻止某个给定类型的警告信息value的常见值all:忽略所有类型的警告。u......
  • 20230711 java.security.MessageDigest
    介绍java.security.MessageDigestpublicabstractclassMessageDigestextendsMessageDigestSpiAPIstaticgetInstanceMessageDigestgetInstance(Stringalgorithm)throwsNoSuchAlgorithmExceptionMessageDigestgetInstance(Stringalgorithm,Stringprovider)......
  • 20230823 java.io.FileWriter
    介绍java.io.FileWriterpublicclassFileWriterextendsOutputStreamWriter用于写出文件字符流可以指定编码API构造器FileWriter(StringfileName)throwsIOExceptionFileWriter(StringfileName,booleanappend)throwsIOExceptionFileWriter(Filefile)thro......
  • 20230823 java.io.FileReader
    介绍java.io.FileReaderpublicclassFileReaderextendsInputStreamReader用于读入文件字符流可以指定编码API构造器FileReader(StringfileName)throwsFileNotFoundExceptionFileReader(Filefile)throwsFileNotFoundExceptionFileReader(FileDescriptorfd)......
  • 20230629 javax.sql.DataSource
    介绍javax.sql.DataSourcepublicinterfaceDataSourceextendsCommonDataSource,WrapperAPIpublicgetConnectionConnectionsetLogWriter,getLogWritersetLoginTimeout,getLoginTimeoutcreateConnectionBuilder继承javax.sql.CommonDataSourcecre......
  • 20230629 javax.sql.rowset.CachedRowSet
    介绍javax.sql.rowset.CachedRowSetpublicinterfaceCachedRowSetextendsRowSet,JoinableAPIpublicpopulate将指定的结果集中的数据填充到被缓存的行集中execute通过执行使用setCommand方法设置的语句集来填充行集setTableName,getTableName数据库......