hibernateバックアップWebアプリケーションから渡されたときに、暗号化が必要なデータベース列があります。 webappは、tomcat 6、Hibernate 4、およびMysqlをバッキングストアとして使用しています。Hibernate - 列を暗号化して保存し、実行時にのみ復号化します
ただし、このフィールドを暗号化/復号化するためのパスワードは、プログラムの実行時にのみ利用可能です。当初、私は非常によくここで説明し、AES_ENCRYPT/DECRYPTメソッドを使用するように期待していた:ここ
DataBase encryption in Hibernate
と:
(これは、Hibernateのバージョン3.6を参照してくださいんが、Iそれは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