休止状態でバックアップされた webapp から渡されたときに、暗号化する必要があるデータベース列があります。webapp は、バッキング ストアとして Tomcat 6、Hibernate 4、および Mysql 上にあります。
ただし、問題は、このフィールドを暗号化/復号化するためのパスワードがプログラムの実行時にしか利用できないことです。最初は、ここでよく概説されている AES_ENCRYPT/DECRYPT メソッドを使用することを望んでいました。
そしてここ:
(これは 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;
}
これには、注釈自体でパスワードを指定する必要があり、変数にすることはできません。
この方法で休止状態を介してデータベースメソッドを使用する方法はありますが、パスワードを変数として使用する方法はありますか? より良いアプローチはありますか?