美文网首页
JDK-AES加密异常问题

JDK-AES加密异常问题

作者: xhh199090 | 来源:发表于2019-07-13 17:23 被阅读0次

    异常报错信息:

    java.security.InvalidKeyException: Illegal key size
    

    源代码程序:

    // 设置加密模式为AES的CBC模式
    Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
    SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
    IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16);
    cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
    
    // 加密
    byte[] encrypted = cipher.doFinal(unencrypted);
    

    当执行到:

    cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
    

    时, 如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的,, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.

    解决方法:
    JDK8的下载地址:

    http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 
    

    下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
    如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
    如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件

    相关文章

      网友评论

          本文标题:JDK-AES加密异常问题

          本文链接:https://www.haomeiwen.com/subject/rmymkctx.html