10
當從支持休眠的web應用程序傳遞時,我有一個數據庫列需要加密。該webapp在tomcat 6,Hibernate 4和Mysql上作爲後備存儲。休眠 - 將列存儲爲已加密,並僅在運行時解密
然而問題是加密/解密此字段的密碼只有在程序運行時纔可用。最初,我曾希望使用AES_ENCRYPT /解密方法,概括得很好這裏:
DataBase encryption in Hibernate
這裏:
(雖然這並不指休眠的3.6版本,我相信它應該在4.0中相同)。
然而,由於該使用如下標記:
@Column(columnDefinition= "LONGBLOB", name="encryptedBody")
@ColumnTransformer(
read="AES_DECRYPT(encryptedBody, 'password')",
write="AES_ENCRYPT(?, 'password')")
public byte[] getEncryptedBody() {
return encryptedBody;
}
public void setEncryptedBody(byte[] encryptedBody) {
this.encryptedBody = encryptedBody;
}
這就要求密碼在註釋本身來指定,而不能是一個變量。
有沒有一種方法通過這種方式通過hibernate使用數據庫方法,但將密碼作爲變量?有更好的方法嗎?
我建議使用http://www.jasypt.org/ – sagneta