我试图生成大小为256位的AES密钥,并且我下载了版本8的JCE安全策略,并将US_export_policy.jar和local_policy.jar放在jre / lib / security文件夹中。我在代码中遗漏了什么,可能是异常的原因?
这就是我编码的内容,它给了我非法的密钥大小异常。
以下是代码:
kgen = KeyGenerator.getInstance("AES");
kgen.init(256);
SecretKey skey = kgen.generateKey();
byte[] iv = new byte[16];
SecureRandom srandom = new SecureRandom();
srandom.nextBytes(iv);
IvParameterSpec ivspec = new IvParameterSpec(iv);
System.out.println(iv);
这里,iv是我在代码中进一步使用的初始化向量。
非常感谢您的帮助和提前感谢。
这是我得到的例外:
java.security.InvalidKeyException: Illegal key size
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039)
at javax.crypto.Cipher.implInit(Cipher.java:805)
at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
at javax.crypto.Cipher.init(Cipher.java:1396)
at javax.crypto.Cipher.init(Cipher.java:1327)
at com.global.DocMananger.Crypto.main(Crypto.java:145)
这是引发错误的行:
Cipher cipherAES = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipherAES.init(Cipher.ENCRYPT_MODE, skey, ivspec);
答案 0 :(得分:0)
使用jdk1.8.0_91
包,它将在更改JCE策略文件后起作用。
在jdk1.8.0_144
中,它甚至无法更改JCE文件。似乎它在该版本中存在一些问题。请教您在Java8论坛中查询此事。