我正在构建基于Jersey 2和Hibernate 4.3的REST应用程序。某些实体属性应以加密形式存储。我目前正在使用Jasypt来实现此目的。例如,我有
@TypeDef(
name = "encryptedString",
typeClass = EncryptedStringType.class,
parameters = {
@Parameter(name = "encryptorRegisteredName",
value = "myHibernateStringEncryptor")
}
)
@Entity
public class User
{
...
@Type( type = "encryptedString" )
private String password_;
...
}
“myHibernateStringEncryptor”只是在启动时创建的StandardPBEStringEncryptor
。
只要我的加密器始终使用相同的密钥,这就可以正常工作。但是,我必须使用基于REST请求上下文的动态密钥(基本上,每个用户的数据必须使用不同的密钥加密)。
如何在仍然进行透明加密的情况下执行此操作?加密密钥可在请求范围内注入,我准备编写自己的UserType
。但是UserType
实例是静态的,所以我不能简单地注入密钥。