java aes 256 java.security.InvalidKeyException:安装策略后密钥大小非法

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

我对使用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("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)