如何使用Hibernate读取加密的数据库字段

Mar*_*nio 3 java sql-server hibernate jpa

我正在开发一个需要加密某些数据库表字段的项目.这样做的方法是使用Microsoft SQL Server内置的加密/解密功能:

ENCRYPTBYPASSPHRASE('PASSPHRASE',‘text’)

DECRYPTBYPASSPHRASE ('12',password)
Run Code Online (Sandbox Code Playgroud)

所以要插入数据,SQL将是这样的:

insert into login_details(uid,username,password) values(1,'smith',EncryptByPassPhrase('12',’XXX’))
Run Code Online (Sandbox Code Playgroud)

并且为了读取数据,SQL将是这样的:

select uid,username, DECRYPTBYPASSPHRASE ('12',password) as Password from login_details
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何使用现有的OR映射在Hibernate中使用它?我正在使用JPA Annotations.使用JPA注释有一种简单的方法吗?

Ste*_*ole 10

听起来像是在寻找org.hibernate.annotations.ColumnTransformer

@Column( name = "pswd" )
@ColumnTransformer( write="EncryptByPassPhrase('12',?)", read="DECRYPTBYPASSPHRASE ('12',pswd)" )
public String getPassword() {
    return password;
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*e L 6

恢复旧线程,但我有类似的要求,发现Jasypt对此有一些非常好的支持.

一旦配置了Jasypt,它就像添加" @Type(type="encryptedString")"注释一样简单:

@Column(name = "password")
@Type(type="encryptedString")
public String getPassword() {
    return password;
}
Run Code Online (Sandbox Code Playgroud)