java - 安装了 JCE Unlimited Strength,但不支持 AES 256

标签 java encryption cryptography jce

我已经将JCE Unlimited Strength安装到JAVA_HOME\lib\security
但是,我仍然得到 128 的 Cipher.getMaxAllowedKeyLength("AES")

我想知道我是否将 JCE 安装在错误的位置。
我在 2 个地方安装了 Java。

  1. C:\Program Files\Java\jre7
  2. C:\Development\Java\jdk1.6.0_21

谁能告诉我JCE无限强度的正确安装位置在哪里? 非常感谢您的帮助。

我的代码:

 KeyGenerator generator = KeyGenerator.getInstance("AES");      
 generator.init(256);       SecretKey secretKey = generator.generateKey();      
 byte[] raw= secretKey.getEncoded();        
 SecretKeySpec sskey= new SecretKeySpec(raw, "AES");

        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");         
        if (mode == Cipher.ENCRYPT_MODE) { 
           Cipher.getMaxAllowedKeyLength("AES"));   
           cipher.init(Cipher.ENCRYPT_MODE, sskey);             
           CipherInputStream cis = new CipherInputStream(is, cipher); 
           doCopy(cis, os);         
        } else if (mode == Cipher.DECRYPT_MODE) { 
           cipher.init(Cipher.DECRYPT_MODE, sskey); 
           CipherOutputStream cos = new CipherOutputStream(os, cipher);             
           doCopy(is, cos);         
        }

最佳答案

您需要将文件安装到要运行代码的 JVM 中。为了安全起见,我建议在两者中都安装它。

我注意到您有两个不同的版本:用于 JRE 的 Java 7 和用于 SDK 的 Java 6。请记住,Java 6 和 7 有不同的无限强度策略文件,因此您需要下载这两套文件。

  • 对于 JRE,请安装到 C:\Program Files\Java\jre7\lib\security
  • 对于 JDK,请安装到 C:\Development\Java\jdk1.6.0_21\jre\lib\security

关于java - 安装了 JCE Unlimited Strength,但不支持 AES 256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320705/

相关文章:

java - jackson json 与 hibernate : jackson-module-hibernate usage

c# - 使用 AES/CBC/NoPadding 将 C# 转换为 Python

java - winzipaes 在 Android 上解密 10 MB 的文件很慢

java - 我的 CipherOutputStream 无声地失败

c++ - 在 Windows 上使用 openssl 库生成随 secret 钥/数据

java - Jaxb 解码返回空值

java - 遍历异构列表

java - 无法使用 Geronimo 检索 "entityManagerFactory"

python - 实现离散对数的 Pollard Rho 算法

javascript - 使用 JS 中的 SJCL 和 Ruby 中的 OpenSSL 的椭圆曲线加密