Jasypt - 使用不同的加密器加密和解密

时间:2017-01-30 06:37:44

标签: java hibernate encryption jasypt

情况是我有一个使用hibernate的应用程序。我将其配置为使用jasypt,以便此应用程序将数据加密到数据库中。 然后,我有另一个应用程序从数据库中读取数据,它不使用休眠。 两个应用程序都使用相同的数据库,第二个应用程序需要读取和解密第一个应用程序加密的数据。

现在我得到了这个例外,尽管我在两个应用程序中都使用相同的jasypt pwd:

Exception in thread "main" org.jasypt.exceptions.EncryptionOperationNotPossibleException

我正在使用BasicTextEncryptor解密。

我想知道我需要的是否可行,如果是,如何。

请注意,jasypt加密和解密在使用hibernate的应用程序中正常工作

1 个答案:

答案 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);