gpt4 book ai didi

java - InvalidKeyException 非法 key 大小

转载 作者:IT老高 更新时间:2023-10-28 20:23:18 27 4
gpt4 key购买 nike

我有一个测试在我的开发 MacBook Pro 上运行良好,但无法在持续集成 TeamCity 服务器中运行。

错误如下:

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

开发盒和 TeamCity 都使用 Java 1.6,我使用 BouncyCaSTLe 库来满足特殊 AES 加密的需要。

代码如下:

private byte[] aesEncryptedInfo(String info) throws UnsupportedEncodingException, IllegalBlockSizeException, BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidParameterSpecException, InvalidAlgorithmParameterException, NoSuchProviderException {
Security.addProvider(new BouncyCastleProvider());
SecretKey secret = new SecretKeySpec(CUSTOMLONGSECRETKEY.substring(0, 32).getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, secret, new IvParameterSpec(VECTOR_SECRET_KEY.getBytes()));
return cipher.doFinal(info.getBytes("UTF-8"));
}

更新

看起来根据选择的答案,我必须修改我的 TeamCity 安装中的某些内容,它可能会影响某些用户安装 - 所以这不是一个好的选择,我必须切换到另一个加密库来不受限制地做到这一点。因此,充气城堡可能会有所帮助。

更新 2

我实际上改用 BouncyCaSTLe 来避免这个限制。请注意,这仅在您直接使用自己的 BC 类而不是 BC 提供程序时才有效。

最佳答案

此错误表示您的 Java 虚拟机使用的策略仅允许受美国导出法律限制的加密 key 大小。

Java 9 及更高版本

Unlimited Strength Jurisdiction Policy Files 包含在 Java 9 中,默认使用(参见 Security Updates in the Java 9 Migration Guide)。

如果您在使用 Java 9 时遇到此错误,则可能意味着策略配置已更改为更具限制性的策略 (limited),请参阅迁移指南中的说明:

JCE Jurisdiction Policy File Default is Unlimited

If your application previously required the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files, then you no longer need to download or install them. They are included in the JDK and are activated by default.

If your country or usage requires a more restrictive policy, the limited Java cryptographic policy files are still available.

If you have requirements that are not met by either of the policy files provided by default, then you can customize these policy files to meet your needs.

See the crypto.policy Security property in the <java-home>/conf/security/java.security file, or Cryptographic Strength Configuration in the Java Platform, Standard Edition Security Developer's Guide.

Java 8 及更早版本

Java 8 更新 161 及更高版本

从 Java 8 Update 161 开始,Java 8 默认采用 Unlimited Strength Jurisdiction Policy。如果您收到此错误,则可能表明配置已更改为 limited .请参阅 Java 8 Update 151 的下一部分或 Java 9 的上一部分中的说明,将其更改回 unlimited .

Java 8 更新 151 及更高版本

从 Java 8 Update 151 开始,Java 8 中包含了 Unlimited Strength Jurisdiction Policy,但默认情况下不使用。要启用它,您需要编辑 java.security文件在 <java_home>/jre/lib/security (对于 JDK)或 <java_home>/lib/security (对于 JRE)。取消注释(或包含)该行

crypto.policy=unlimited

确保使用以管理员身份运行的编辑器编辑文件。

策略更改仅在重新启动 JVM 后生效(这对于 Tomcat 等长时间运行的服务器进程尤其重要)。

为了向后兼容,安装下一节所述的策略文件仍然有效。

在 Java 8 更新 151 之前

对于 Java 8 Update 144 及更早版本,您需要安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files(可在 Oracle 获得)。

要安装这些文件(来自下载中的 README.txt):

  1. Download the unlimited strength JCE policy files.

  2. Uncompress and extract the downloaded file.

    This will create a subdirectory called jce. This directory contains the following files:

    README.txt                   This file
    local_policy.jar Unlimited strength local policy file
    US_export_policy.jar Unlimited strength US export policy file
  3. Install the unlimited strength policy JAR files.

    In case you later decide to revert to the original "strong" but limited policy versions, first make a copy of the original JCE policy files (US_export_policy.jar and local_policy.jar). Then replace the strong policy files with the unlimited strength versions extracted in the previous step.

    The standard place for JCE jurisdiction policy JAR files is:

    <java-home>/lib/security           [Unix]
    <java-home>\lib\security [Windows]

注意 JDK 位于 jre/lib/security 中。

新的策略文件只有在重启 JVM 后才会生效(这对于像 Tomcat 这样长时间运行的服务器进程尤其重要)。

关于java - InvalidKeyException 非法 key 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3862800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com