У меня есть столбец базы данных, который нужно зашифровать, когда он передается из поддерживаемого hibernate webapp. Webapp находится на tomcat 6, Hibernate 4 и Mysql в качестве хранилища резервных копий.
Однако проблема заключается в том, что пароль для шифрования/дешифрования этого поля будет доступен только во время выполнения программы. Первоначально я надеялся использовать методы AES_ENCRYPT/DECRYPT, изложенные здесь довольно хорошо:
Шифрование DataBase в 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 таким образом, но с паролем как переменной? Есть ли лучший подход?