PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como criptografar uma coluna no Postgres usando Hibernate @ColumnTransformer


Você precisa usar pgp_sym_encrypt para escrever e pgp_sym_decrypt para ler. Você fez o contrário.
@ColumnTransformer(
    read =  "pgp_sym_decrypt(" +
            "    test, " +
            "    current_setting('encrypt.key')" +
            ")",
    write = "pgp_sym_encrypt( " +
            "    ?, " +
            "    current_setting('encrypt.key')" +
            ") "
)
@Column(columnDefinition = "bytea")
private String test;

Como codificar a chave de criptografia no mapeamento não parece uma boa ideia, usaremos o suporte do PostgreSQL para configurações definidas pelo usuário.

Portanto, o encrypt.key é armazenado no postgresql.conf arquivo de configuração:
encrypt.key = 'Wow! So much security.'

O exemplo está no GitHub e funciona como um encanto.