PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come crittografare una colonna in Postgres usando Hibernate @ColumnTransformer

Devi usare pgp_sym_encrypt per scrivere e pgp_sym_decrypt da leggere. Hai fatto il contrario.

@ColumnTransformer(
    read =  "pgp_sym_decrypt(" +
            "    test, " +
            "    current_setting('encrypt.key')" +
            ")",
    write = "pgp_sym_encrypt( " +
            "    ?, " +
            "    current_setting('encrypt.key')" +
            ") "
)
@Column(columnDefinition = "bytea")
private String test;

Poiché l'hardcoding della chiave di crittografia nella mappatura non sembra una buona idea, utilizzeremo invece il supporto PostgreSQL per le impostazioni definite dall'utente.

Quindi, encrypt.key è memorizzato in postgresql.conf file di configurazione:

encrypt.key = 'Wow! So much security.'

Il l'esempio è su GitHub e funziona come un incantesimo.