Mam kolumnę bazy danych, która musi zostać zaszyfrowana po przesłaniu z aplikacji internetowej hibernacji. Aplikacja webowa znajduje się na tomcat 6, Hibernate 4 i Mysql jako zaplecze.Hibernuj - Przechowuj kolumnę jako zaszyfrowaną i odszyfruj tylko w środowisku wykonawczym
Problem polega jednak na tym, że hasło do szyfrowania/odszyfrowania tego pola będzie dostępne tylko w czasie wykonywania programu. Początkowo miałem nadzieję użyć metod AES_ENCRYPT/odszyfrować, przedstawił dość dobrze tutaj:
DataBase encryption in Hibernate
i tutaj:
(Choć to nie odnosi się do wersji 3.6 hibernacji, ja uwierz, że powinno być tak samo w 4.0).
Jednakże, ponieważ ten wykorzystuje następujące oznaczenia:
@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;
}
Wymaga to, że hasło zostać określone w samej adnotacji i nie może być zmienna.
Czy istnieje sposób użycia metod bazy danych przez hibernację w ten sposób, ale z hasłem jako zmienną? Czy istnieje lepsze podejście?
Proponuję skorzystać z http://www.jasypt.org/ – sagneta