【发布时间】:2018-03-30 19:37:05
【问题描述】:
我想使用这些类 https://github.com/fukata/AES-256-CBC-Example 在我的项目中,但即使我在不更改任何内容的情况下编译它也会导致错误:
线程“主”java.lang.RuntimeException 中的异常: java.security.InvalidKeyException:非法密钥大小 AESMain.main(AESMain.java:10) 处的 AESUtil.encrypt(AESUtil.java:23) 原因:java.security.InvalidKeyException:非法密钥大小 javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039) 在 javax.crypto.Cipher.implInit(Cipher.java:805) 在 javax.crypto.Cipher.chooseProvider(Cipher.java:864) 在 javax.crypto.Cipher.init(Cipher.java:1396) 在 javax.crypto.Cipher.init(Cipher.java:1327) 在 AESUtil.encrypt(AESUtil.java:20) ... 1 更多
如何解决非法密钥大小? 我下载了它并将 java 文件夹复制到我的项目中。任何帮助将不胜感激:)
【问题讨论】:
-
基本上 128 位密钥长度的 AES 加密与 256 位一样安全,两者都不能被暴力破解。
-
@zaph 是的,但我想使用 AES-256 和 32 字节 IV,现在上面的类抛出错误:
java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long因为我使用了 32 字节 IV -
32 字节的 IV 没有意义,CBC 模式下的 AES 需要 16 字节的 IV。
-
@J.Kennsy AES 支持三种密钥长度:128、192 和 256 位和 一个 IV 长度,与块大小相同:128 位(16 字节)。
标签: java maven github encryption