使用加密算法报错异常:java.security.InvalidKeyException: Illegal key size

简介: 使用加密算法报错异常:java.security.InvalidKeyException: Illegal key size

之前文章有提到过(常用对称加密算法之AES算法-CBC模式),因为需求的需要,使用到了对称加密算法AES算法,开发完毕并测试通过了,但是后来有同事反馈,当他的项目使用到加密这一步的时候就会报错。


报错信息


java.security.InvalidKeyException: Illegal key size

// 加密
public static String encrypt(String password) throws Exception {
    Cipher cipher = Cipher.getInstance(INSTANCE);
    SecretKeySpec keySpec = new SecretKeySpec(BYTES_KEY, AES);
    // CBC模式需要生成一个16 bytes的initialization vector
    SecureRandom sr = SecureRandom.getInstanceStrong();
    byte[] iv = sr.generateSeed(16);
    IvParameterSpec ivps = new IvParameterSpec(iv);
    cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivps);//运行到这一行时就报上面的异常
    byte[] data = cipher.doFinal(password.getBytes(StandardCharsets.UTF_8));
    // IV不需要保密,把IV和密文一起返回
    return DatatypeConverter.printBase64Binary(join(iv, data));
}

奇怪的是只有这个同事的有问题


查找原因


通过谷歌发现根本原因:JDK版本的不同

直接原因:


如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制,不同的jdk版本又有不同的长度限制


解决


这里建议直接更换JDK,现在较为普遍使用的jdk8版本,事实也证明,jdk8没有遇到这种长度限制


这里给大家提供下jdk8下载版本


MAC版

链接: https://pan.baidu.com/s/1649IuAnx79pmvsTaGIJJAA 提取码: uv38


Linux版

链接: https://pan.baidu.com/s/1IsWdCbv0h0htFpm0M-Gf0Q 提取码: 2f4w


Windows版

链接: https://pan.baidu.com/s/1slN99jqwS0afoJhldoBDYg 提取码: wmbk


如果获取出现问题可私信我发你

目录
相关文章
|
2月前
|
Linux 数据安全/隐私保护 Windows
aes加密在linux下会生成随机key的解决办法
aes加密在linux下会生成随机key的解决办法
39 2
|
8月前
|
Java
解决异常 java.net.URISyntaxException: Illegal character in query at index
解决异常 java.net.URISyntaxException: Illegal character in query at index
422 0
|
2月前
|
安全 Java
java.security.InvalidKeyException: Illegal key size
java.security.InvalidKeyException: Illegal key size
22 0
|
9月前
|
安全 算法 Oracle
【Java用法】加密异常----Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
【Java用法】加密异常----Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
188 0
|
8月前
|
Linux 数据安全/隐私保护 Windows
AES在windows下正常加解密,Linux下加密正常,解密异常(javax.crypto.BadPaddingException: pad block co
AES在windows下正常加解密,Linux下加密正常,解密异常(javax.crypto.BadPaddingException: pad block co
102 1
JavaFX-MediaPlayer 参数URI格式问题:java.net.URISyntaxException: Illegal character in path at index X
JavaFX-MediaPlayer 参数URI格式问题:java.net.URISyntaxException: Illegal character in path at index X
|
9月前
|
Java 数据库连接 开发工具
【Java异常】Spring Boot出现警告 WARNING: An illegal reflective access operation has occurred
【Java异常】Spring Boot出现警告 WARNING: An illegal reflective access operation has occurred
217 1
|
2天前
|
机器学习/深度学习 人工智能 安全
网络安全与信息安全:漏洞、加密技术与安全意识的交汇点
【7月更文挑战第13天】在数字化时代,网络安全和信息安全是保护个人隐私和企业资产的关键。本文将深入探讨网络安全漏洞的成因,分析加密技术如何成为防御机制的一部分,并强调提升安全意识的必要性。我们将通过案例分析和最新研究,揭示网络威胁的演变趋势,以及如何通过教育和技术手段构建更强大的防线。
|
1天前
|
SQL 安全 算法
网络安全的守护者:漏洞、加密与意识的三维防御
【7月更文挑战第14天】在数字时代的浪潮中,网络安全成为保护个人隐私和企业资产的盾牌。本文深入探讨网络安全中的三大支柱:安全漏洞的识别与防范、加密技术的应用与发展以及用户安全意识的培养。我们将分析这些要素如何共同构建起一个坚固的信息安全防线,并讨论它们在现代网络环境中的重要性和挑战。
13 3
|
2天前
|
安全 网络安全 量子技术
网络安全与信息安全:漏洞、加密与安全意识的三重奏
在数字化浪潮中,网络安全与信息安全成为维护信息完整性、保密性与可用性的关键。本文将深入探讨网络安全漏洞的类型及其成因,介绍加密技术如何保护数据免受未授权访问,并强调提升个人与企业的安全意识对于防范网络攻击的重要性。通过案例分析与统计数据支撑,文章旨在为读者提供全面的网络安全知识分享,促进构建更为坚固的网络环境。