12

休止状態でバックアップされた webapp から渡されたときに、暗号化する必要があるデータベース列があります。webapp は、バッキング ストアとして Tomcat 6、Hibernate 4、および Mysql 上にあります。

ただし、問題は、このフィールドを暗号化/復号化するためのパスワードがプログラムの実行時にしか利用できないことです。最初は、ここでよく概説されている AES_ENCRYPT/DECRYPT メソッドを使用することを望んでいました。

Hibernate でのデータベース暗号化

そしてここ:

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html#mapping-column-read-and-write

(これは 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;
}

これには、注釈自体でパスワードを指定する必要があり、変数にすることはできません。

この方法で休止状態を介してデータベースメソッドを使用する方法はありますが、パスワードを変数として使用する方法はありますか? より良いアプローチはありますか?

4

2 に答える 2