我使用基于注释的实体。我想使用jasypt加密数据类型。
我找不到任何明确指出如何配置它们的内容。我的persistance.xml只引用了一个数据源 - 没有特定于hibernate的配置。
有没有关于如何实现这一目标的文件?
答案 0 :(得分:-1)
首先,用a定义加密类型 @TypeDef注释,可以在持久化实体内部 类或在单独的@TypeDefs声明中 package-info.java文件:
@TypeDef(
name="encryptedString",
typeClass=EncryptedStringType.class,
parameters= {
@Parameter(name="encryptorRegisteredName", value="myHibernateStringEncryptor")
}
)
...然后简单地用已经声明的类型映射属性:
@Type(type="encryptedString")
public String getAddress() {
return address;
}
为Hibernate提供加密器 myHibernateStringEncryptor,这可以用两种不同的方式绑定,具体取决于我们是否使用像Spring这样的IoC容器。
使用Spring
<bean id="hibernateStringEncryptor"
class="org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor">
<property name="registeredName">
<value>strongHibernateStringEncryptor</value>
</property>
<property name="algorithm">
<value>PBEWithMD5AndTripleDES</value>
</property>
<property name="password">
<value>jasypt</value>
</property>
</bean>
没有春天,
StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor();
HibernatePBEEncryptorRegistry registry =
HibernatePBEEncryptorRegistry.getInstance();
registry.registerPBEStringEncryptor("strongHibernateStringEncryptor", strongEncryptor);