我正在尝试编写一个非常简单的程序来加密和解密字符串:
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
我做错了什么?
最佳答案
好的,经过几个小时的搜索,我终于找到了解决方案:
显然我没有安装无限强度的正确策略。
这就是我解决问题的方法:
从以下位置下载政策:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
解压该文件并将 local_policy.jar 和 US_export_policy.jar 放入 ${jdk -path}/jre/lib/security 中并覆盖现有文件。 (注意:不要将其放在 JRE 文件夹中。您必须将其放入 jdk/jre/... ... - 这花了我几个小时:) )
重启服务器就可以了!
希望有帮助:)
关于java - Spring 安全: Simple Encryption/decryption not working: InvalidKeyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46603243/