【问题标题】:java.security AES encryption key lengthjava.security AES 加密密钥长度
【发布时间】:2013-10-21 20:20:24
【问题描述】:

当密钥长度为 128 位时,一切正常。但是当我使用长度为 192 或 256 位的密钥时,出现以下异常。

java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)

我找到了这个Java Security: Illegal key size or default parameters?。但是我下载了jar文件并放入${java.home}/lib/security/后,还是出现了同样的异常。

【问题讨论】:

    标签: java encryption aes


    【解决方案1】:

    Java 的默认最大强度为 128 位。

    您需要的是一组名为Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 的文件,目前可在Java SE download page 获得。此 zip 文件包含几个策略 jar,您需要将它们复制到 JRE 的 {java.home}/jre/lib/security 目录中已有的顶部。

    这将使您可以将密钥强度更改为 128 位以上

    【讨论】:

    • 但是我从oracle.com/technetwork/java/javase/downloads/…下载jar文件,放到${java.home}/lib/security/下,还是出现异常。
    • 是的,您只需将这些 jar 文件放在运行 java 程序的 JRE 的 lib/security 目录中
    • @Cacheing 确保它们进入 ${java.home}/jre/lib/security,而不是你上面说的 ${java.home}/lib/security
    • @Christian 密钥大小限制为 128 而不是字节。
    【解决方案2】:

    您使用的是什么 Java 实现?

    如果您查看文档(如 here),您会发现它们可能只支持特定的密钥长度。这个只支持128位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2017-04-26
      相关资源
      最近更新 更多