【问题标题】:Using AES-256-CBC encryption from github [duplicate]使用来自 github 的 AES-256-CBC 加密 [重复]
【发布时间】: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


【解决方案1】:

我相信您需要安装 Java Cryptography Unlimited Strength 扩展:

http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

【讨论】:

  • 好吧,指令说我应该将两个 jar 都粘贴到 /lib/security 文件夹,但我的不存在那里(我有 jdk,但我猜它不会改变任何东西) .
  • @J.Kennsy for JDK jre 目录位于 jdk 目录下,所以它是 jdk[version]/jre/lib/security 。请注意,对于您未识别的每个 Java 版本,unlimited-policy 是不同的;对于 8 使用 oracle.com/technetwork/java/javase/downloads/… -- 最后,对于 9,它是不需要的。
猜你喜欢
  • 2013-08-11
  • 1970-01-01
  • 2017-09-18
  • 2017-08-28
  • 2017-09-28
  • 2015-08-22
  • 2021-06-07
  • 2021-04-22
  • 1970-01-01
相关资源
最近更新 更多