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

标签 java hibernate encryption jasypt

情况是我有一个使用 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/

相关文章:

java - Android 上下文问题 - 广播接收器(警报管理器)中应使用什么上下文?

java - 子类的 GWT 序列化

java - 从 Eclipse Luna 卸载 JBoss Tools 4.3.0 Final (Hibernate)

c++ - 使用 zlib 作为数据库是个好主意吗

Java 等效于 C# AES 加密

java - 使用 SimpleDateFormat(string,locale) 解析法语区域设置错误

java - Android Studio 显示不可读语言

java - 通过 hibernate 获取不同的值

java - 发生 UnsatisfiedDependencyException 错误

security - 就安全性而言,散列和加密的顺序有什么区别吗?