为什么这个初始化会成功:
Cipher AESCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
AESCipher.init(Cipher.ENCRYPT_MODE, secretKey, secRandom);
当出现以下情况时会失败:
Cipher AESCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
AESCipher.init(Cipher.DECRYPT_MODE, secretKey, secRandom);
在主线程中抛出异常 "main" java.security.InvalidKeyException: 参数缺失。
secretKey由KeyGenerator生成,secureRandom是通过使用随机静态种子设置的SecureRandom.getInstance("SHA1PRNG")生成的。
谢谢
SecureRandom
实现确实为静态种子创建了一个静态值(如果使用正确)。当然,init
调用无法知道它是静态值,因此它将简单地退出并显示JavaDoc中指定的异常。 - Maarten Bodewes