java aes 256 java.security.InvalidKeyException:安装策略后密钥大小非法
我对使用AES 256密钥加密字节有问题。 我已经安装了策略。以下是我所做的:java aes 256 java.security.InvalidKeyException:安装策略后密钥大小非法,java,encryption,aes,sha256,Java,Encryption,Aes,Sha256,我对使用AES 256密钥加密字节有问题。 我已经安装了策略。以下是我所做的: 下载文件: 我将文件local_policy和US_export_policy移动到目录/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/security 我重启mac 但我仍然收到一条错误消息,其中包含以下代码: KeyGenerator keyGenerator = KeyGenerator.getInstance("A
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(256);
SecretKey secretKey = keyGenerator.generateKey();
Cipher decryption = Cipher.getInstance("AES/CBC/PKCS5PADDING");
decryption.init(Cipher.DECRYPT_MODE, secretKey,
new IvParameterSpec(secretKey.getEncoded())); // <-- Illegal key size
我必须做什么,使用256 AES加密 策略文件应能解决此问题。检查path环境变量以确认您使用的jre与包含策略文件的jre相同。重要提示:您已经知道jre的位置。例如:在我的计算机中有
C:\Java\jre7\lib\security
和C:\Java\jdk1.7.0\u 02\jre\lib\security
,但是eclipse显示jre是C:\Java\jre7\lib\security
,所以你必须将两个文件复制到这里。我做了什么
已从此位置下载策略文件
粘贴到位
jre/lib/security/
它可以工作……代码应该正确格式化。为什么要回滚我的编辑以修复格式?sry,我不知道你已经编辑了我的文本。好的,我将修复放回。请不要将密钥用作IV-你将面临选择的密文攻击,该攻击会恢复密钥。如果您必须使用固定静脉注射,0会更安全。谢谢,但为什么我不应该使用填充?如果密钥长度未知,那么它会更安全,是吗?我检查了我的$JAVA_HOME(结果:“/Library/JAVA/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/HOME”),或者我用以下命令启动了我的JAVA程序:“/Library/JAVA/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/HOME/bin/JAVA-jar sec_test.jar”,但它不起作用。之后,我复制了另一个目录(“/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home/bin”)中的策略文件,我就可以启动程序了。好吧,这很有效,但为什么呢?我检查了ire的路径,并使用JRE 1.7.0(40)明确启动了该程序。JRE还有其他设置吗?请检查$PATH环境变量,您将找到为您的环境配置的java
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)