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

Jasypt - encrypt and decrypt using different encryptors

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

尽管我在两个应用程序中使用相同的 jasypt pwd,但现在我遇到了这个异常:

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

我正在使用 BasicTextEncryptor 解密。

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

请注意,jasypt 加密和解密在使用休眠的应用程序中运行

我遇到了类似的错误,我也使用了 BasicTextEncryptor。

原因:BasicTextEncryptor 使用 StandardPBEStringEncryptor 来创造奇迹。最后一个使用盐,默认盐是 RandomSaltGenerator。

解决方案:干净的方法是通过扩展 TextEncryptor 接口创建自己的加密器(只有几种方法)。看一下 BasicTextEncryptor 里面的例子。

代码示例(避免错误):

StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(encryptionKey);
encryptor.setSaltGenerator(new StringFixedSaltGenerator(salt));
String encodedString = encryptor.encrypt(originalString);