Jersey:如何使用动态密钥实现JPA加密

时间:2015-11-16 08:52:59

标签: hibernate jersey jasypt

我正在构建基于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实例是静态的,所以我不能简单地注入密钥。

0 个答案:

没有答案