Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring安全性:简单加密/解密不工作:InvalidKeyException_Java_Spring Boot_Encryption_Spring Security_Spring Data Jpa - Fatal编程技术网

Java Spring安全性:简单加密/解密不工作:InvalidKeyException

Java Spring安全性:简单加密/解密不工作:InvalidKeyException,java,spring-boot,encryption,spring-security,spring-data-jpa,Java,Spring Boot,Encryption,Spring Security,Spring Data Jpa,我正在尝试编写一个非常简单的程序来加密和解密字符串: String password = "kdfljxcasd"; String encodeThat = "Hello World + some special chars!^^-"; String salt = KeyGenerators.string().generateKey(); BytesEncryptor encryptor = Encryptors.standard(password, salt);

我正在尝试编写一个非常简单的程序来加密和解密字符串:

    String password = "kdfljxcasd";
    String encodeThat = "Hello World + some special chars!^^-";
    String salt = KeyGenerators.string().generateKey();
    BytesEncryptor encryptor = Encryptors.standard(password, salt);

    // breakpoint steping doesn't reach that point - it gets stuck here for some reason... 
    byte[] encrypted = encryptor.encrypt(encodeThat.getBytes());
    byte[] decrypted = encryptor.decrypt(encrypted);

    System.out.println("Before encryption: " + encodeThat);     
    System.out.println("Encrypted: " + encrypted.toString());       
    System.out.println("After encryption: " + decrypted.toString());
但由于某些原因,我从未得到加密值。当我调用
enryptor.encrypt()
时,它永远不会到达那个点

我得到以下异常:

'Unable to initialize due to invalid secret key' java.lang.IllegalArgumentException: Unable to initialize due to invalid secret key

我做错了什么?

好的,经过几个小时的搜索,我终于找到了解决方案:

显然,我没有为无限强度安装正确的策略

我就是这样解决的:

  • 从以下站点下载策略:

  • 将其解压并将local_policy.jarUS_export_policy.jar放入${jdk-path}/jre/lib/security中,并覆盖现有文件。(注意:不要把它放在JRE文件夹中。你必须把它放在jdk/JRE/…-这花了我几个小时:))

  • 重新启动服务器,它就会工作


  • 希望有帮助:)

    好的,经过几个小时的搜索,我终于找到了解决方案:

    显然,我没有为无限强度安装正确的策略

    我就是这样解决的:

  • 从以下站点下载策略:

  • 将其解压并将local_policy.jarUS_export_policy.jar放入${jdk-path}/jre/lib/security中,并覆盖现有文件。(注意:不要把它放在JRE文件夹中。你必须把它放在jdk/JRE/…-这花了我几个小时:))

  • 重新启动服务器,它就会工作


  • 希望对您有所帮助:)

    因为Java 8u151,您可以使用以下属性解决此问题:


    Security.setProperty(“加密策略”、“无限制”)

    由于Java 8u151,您可以使用以下属性解决此问题:


    Security.setProperty(“加密策略”、“无限制”)

    尝试升级到较新的java 8 JDK版本

    对我来说,我尝试了两种版本:

    • 1.8.131-失败
    • 1.8.201-成功

    尝试升级到较新的java 8 JDK版本

    对我来说,我尝试了两种版本:

    • 1.8.131-失败
    • 1.8.201-成功

    有没有不添加外部罐子的方法?我不知道,对不起。但是,您是否需要一个没有外部jar的解决方案?有没有一种不添加外部jar的方法?我不知道,对不起。但是,您需要一个没有外部罐子的解决方案吗?