java - Spring 安全: Simple Encryption/decryption not working: InvalidKeyException

标签 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);

    // 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

我做错了什么?

最佳答案

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

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

这就是我解决问题的方法:

  1. 从以下位置下载政策:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

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

  3. 重启服务器就可以了!

希望有帮助:)

关于java - Spring 安全: Simple Encryption/decryption not working: InvalidKeyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46603243/

相关文章:

java - 如何在满足条件后从循环中跳出

java - 在windows上使用java查找GPU规范

java - 是否可以在EnvironmentPostProcessor的实现中使用@ConstructorBinding绑定(bind)不可变的@ConfigurationProperties bean?

linux - perl加密脚本IDEA

java - 如何更改 JButton 大小

java - 线程执行时调用start()方法和run()方法哪个更好

java - 如何在方法之间保存数据

spring-boot - 使用 Spring Social Google 提供程序的 Spring Boot

encryption - 加密/解密字符串 Kotlin

java - 加密代码