首页 > 编程语言 >使用AES的256位密钥加解密报错java.security.InvalidKeyException: Illegal key size

使用AES的256位密钥加解密报错java.security.InvalidKeyException: Illegal key size

时间:2023-02-09 15:34:59浏览次数:71  
标签:类库 AES java jar 报错 policy Java security

 

使用AES的256位密钥加解密报错java.security.InvalidKeyException: Illegal key size。


编写微信小程序在获取用户时,需要根据小程序传来的iv,encryptedData,和sessionkey来解密,在本地使用postman测试没有问题,但是部署到服务器就报错。


根据自bai我du思zhi考dao,我找到了问题所在:

       我们做Java开发,都会先在电脑上安装JDK(Java Development Kit) 并配置环境变量,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路径,),其中包含有两个.jar文件:“local_policy.jar ”和“US_export_policy.jar”,也就是我们平时说的jar包,这两个jar包就是我们JCE中的核心类库了。JRE中自带的“local_policy.jar ”和“US_export_policy.jar”是支持128位密钥的加密算法,而当我们要使用256位密钥算法的时候,已经超出它的范围,无法支持,所以才会报:“java.security.InvalidKeyException: Illegal key size or default parameters”的异常。


解决办法:
首先进入%JAVE_HOME%/jre/lib/security/ 目录当中,目录下面会有policy文件键夹,或者会有local_policy.jar和US_export_policy.ja两个jar包。
如图:
在这里插入图片描述

在这里插入图片描述


第一种情况: 只有local_policy.jar,US_export_policy.jar两个jar包。

          去官方下载JCE无限制权限策略文件。
JDK5: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
JDK6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JDK7: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
将两个jar文件放到%JAVE_HOME%\jre\lib\security目录下覆盖原来文件。


第二种情况: 有policy 文件夹,说明此版本为JVM启用 无限制强度管辖策略 有了一种新的更简单的方法。
        在当前文件夹中查找文件 java.security。
        然后用文本编辑器打开java.security,并找到定义java安全性属性crypto.policy的行,它可以有两个值limited或unlimited - 默认值是limited。
        你会找到一行注释:

#crypto.policy=unlimited

取消注释,然后重启java程序。


然后然后,我的错误从java.security.InvalidKeyException: Illegal key size,爽快的变成了javax.crypto.IllegalBlockSizeException: last block incomplete in decryption(T_T后来发现是因为参数传到服务器发生了变化,+ - /什么的,需要replace)

参考文档:https://blog.csdn.net/zhuwangxiangbie/article/details/105124612.

标签:类库,AES,java,jar,报错,policy,Java,security
From: https://www.cnblogs.com/kelelipeng/p/17105453.html

相关文章

  • JAVA缓存规范 —— 虽迟但到的JCache API与天生不俗的Spring Cache
    大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。有......
  • java冒泡排序
    java/**冒泡排序1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置2.每一次比较,都会产生一个最大或者最小的数字;3.下一轮则可以少一次排序!4......
  • java基础
    注释注释并不会被执行,是给我们写代码的人看的;书写注释是一个非常好的习惯单行注释//多行注释/*注释*/文档注释/**文档*/标识符关键字java所有的组成部......
  • 【Java面试】Runnable和Thread比较
    在线程使用过程中,我们肯定会用到Runnable与Thread,前者的实现方式是实现其接口即可,后者的实现方式是继承其类。两者实现方式带来最明显的区别就是,由于Java不允许多继承,因此......
  • Appium 启动报错“ Could not find 'apksigner.jar' ”
    问题描述:Appium服务启动提示coundnotfind 'apksigner.jar'  定位问题: 通过上面的报错信息可知,问题在于AndroidSDK的目录下缺失apksigner.jar解决问题:1、......
  • JAVA PDF转图片,以及几种方案对比
    背景项目需要将PDF转为图片存储,在网上搜索,找到了三种方案(这里链接都是找的github上的地址):pdfbox,开源软件,apache社区在维护,还比较活跃icepdf,商业软件,但是github上有开......
  • java基础常用
    数组java数组需要先初始化才能使用初始化后未填充的位置自动填充nullObject数组能存储任意类型数据,包括基本数据类型Object数组1@Test2publicvoidobje......
  • spring-security-oauth2-client与jdk版本不符合报错
    报错描述:java.lang.UnsupportedClassVersionError:org/springframework/security/oauth2/client/registration/ClientRegistrationRepositoryhasbeencompiledbyamo......
  • JavaScript 入门(下)
    目录​​一、JavaScript简介​​​​二、JavaScript的特点​​​​1、动态改变页面内容​​​​2、动态改变网页的外观​​​​3、验证表单数据​​​​4、响应事件​​​​......
  • JavaScript 入门(上)
    目录​​一、JavaScript简介​​​​二、JavaScript的特点​​​​1、动态改变页面内容​​​​2、动态改变网页的外观​​​​3、验证表单数据​​​​4、响应事件​​​​......