情况是我有一个使用 hibernate 的应用程序。我将其配置为与 jasypt 一起使用,以便该应用程序将数据加密到数据库中。 然后,我有另一个从数据库读取数据的应用程序,它不使用 hibernate 。 两个应用程序使用相同的数据库,第二个应用程序需要读取并解密第一个应用程序加密的数据。
现在,尽管我在两个应用程序中使用相同的 jasypt pwd,但我还是遇到了此异常:
Exception in thread "main" org.jasypt.exceptions.EncryptionOperationNotPossibleException
我正在使用 BasicTextEncryptor 进行解密。
我想知道我需要的是否可行,如果可行,如何实现。
请注意,jasypt 加密和解密是在使用 hibernate 的应用程序中进行的
最佳答案
我遇到了类似的错误,并且我也使用了 BasicTextEncryptor。
原因:BasicTextEncryptor 使用 StandardPBEStringEncryptor 来发挥魔力。最后一个使用盐,默认盐是RandomSaltGenerator。
解决方案:最干净的方法是通过扩展 TextEncryptor 接口(interface)创建自己的加密器(只有几种方法)。看看里面BasicTextEncryptor举个例子。
代码示例(避免错误):
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(encryptionKey);
encryptor.setSaltGenerator(new StringFixedSaltGenerator(salt));
String encodedString = encryptor.encrypt(originalString);
关于java - Jasypt - 使用不同的加密器进行加密和解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41930215/