使用hibernate时如何加密数据库字段?
我们开发了一些客户正在使用的产品一些客户正在询问有关数据库加密的问题
是否有可能在应用程序级别加密数据,而不需要对代码进行更多更改。
请尽快给我建议。
最佳答案
试试这个:
在实体中放置属性:
private byte[] encryptedBody;
使用这个getter和setter:
@Column(columnDefinition= "LONGBLOB", name="encryptedBody")
@ColumnTransformer(
read="AES_DECRYPT(encryptedBody, 'yourkey')",
write="AES_ENCRYPT(?, 'yourkey')")
public byte[] getEncryptedBody() {
return encryptedBody;
}
public void setEncryptedBody(byte[] encryptedBody) {
this.encryptedBody = encryptedBody;
}
然后在检索列时使用:
private final Charset UTF8_CHARSET = Charset.forName("UTF-8");
String decodeUTF8(byte[] bytes) {
return new String(bytes, UTF8_CHARSET);
}
String s = decodeUTF8(entity.getEncryptedBody());
注意:aes_decrypt和aes_encrypt属于mysql。如果您有不同的数据库引擎,请查找类似的函数。
希望这有帮助。
关于java - Hibernate中的数据库加密,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5621422/