情况是我有一个使用hibernate的应用程序。我将其配置为使用jasypt,以便此应用程序将数据加密到数据库中。 然后,我有另一个应用程序从数据库中读取数据,它不使用休眠。 两个应用程序都使用相同的数据库,第二个应用程序需要读取和解密第一个应用程序加密的数据。
现在我得到了这个例外,尽管我在两个应用程序中都使用相同的jasypt pwd:
Exception in thread "main" org.jasypt.exceptions.EncryptionOperationNotPossibleException
我正在使用BasicTextEncryptor解密。
我想知道我需要的是否可行,如果是,如何。
请注意,jasypt加密和解密在使用hibernate的应用程序中正常工作
答案 0 :(得分:2)
我有一个类似的错误,我也使用了BasicTextEncryptor。
原因:BasicTextEncryptor使用StandardPBEStringEncryptor创造了魔力。最后一个使用盐,默认盐是RandomSaltGenerator。
解决方案:干净的方法是通过扩展TextEncryptor接口来创建自己的加密器(只有几种方法)。看看BasicTextEncryptor的示例。
代码示例(为避免错误):
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(encryptionKey);
encryptor.setSaltGenerator(new StringFixedSaltGenerator(salt));
String encodedString = encryptor.encrypt(originalString);