本问题已经有最佳答案,请猛点这里访问。
我想使用这些课程
https://github.com/fukata/AES-256-CBC-示例
在我的项目中,但是即使我不进行任何更改而对其进行编译,也会导致错误:
Exception in thread"main" java.lang.RuntimeException:
java.security.InvalidKeyException: Illegal key size at
AESUtil.encrypt(AESUtil.java:23) at AESMain.main(AESMain.java:10)
Caused by: java.security.InvalidKeyException: Illegal key size at
javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039) at
javax.crypto.Cipher.implInit(Cipher.java:805) at
javax.crypto.Cipher.chooseProvider(Cipher.java:864) at
javax.crypto.Cipher.init(Cipher.java:1396) at
javax.crypto.Cipher.init(Cipher.java:1327) at
AESUtil.encrypt(AESUtil.java:20) ... 1 more
如何解决非法密钥大小?
我下载了它并将Java文件夹复制到我的项目中。 任何帮助,将不胜感激 :)
本质上,密钥长度为128位的AES加密与256位一样安全,不能强行使用。
@zaph是的,但是我想将AES-256与32byte IV一起使用,现在上面的类抛出错误:java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long因为我使用了32byte IV
32字节的IV毫无意义,CBC模式下的AES需要16字节的IV。
@ J.Kennsy AES支持三种密钥长度:128、192和256位,以及一种IV长度,与块大小相同:128位(16字节)。
我相信您将需要安装Java密码学无限强度扩展:
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
好吧,指示说我应该将两个罐子都粘贴到/ lib / security文件夹中,但是我的那儿不存在(我有jdk,但是我猜没有改变)。
@ J.Kennsy对于JDK,jre目录位于jdk目录下,因此其jdk [version] / jre / lib / security。 请注意,您未确定的Java版本的无限制策略有所不同; 对于8个,请使用oracle.com/technetwork/java/javase/downloads/;对于9个,最后则不需要。