已安装JCE Unlimited Strength但不支持AES 256
我已经为JAVA_HOME \ lib \ security安装了JCE Unlimited strength
但是,我仍然得到128 Cipher.getMaxAllowedKeyLength("AES")
。
我想知道我是否在错误的地方安装了JCE。
我在2个地方安装了Java。
- C:\ Program Files \ Java \ jre7
- C:\开发\的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中。 为了安全起见,我主张在两者中安装它。
我注意到你有两个不同的版本:Java 7用于JRE,Java 6用于SDK。 请记住,Java 6和7具有不同的无限强度策略文件,因此您需要下载这两个集。
- 对于JRE,请安装到
C:\Program Files\Java\jre7\lib\security
。 - 对于JDK,请安装到
C:\Development\Java\jdk1.6.0_21\jre\lib\security
。