sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo encriptar una columna en Postgres usando Hibernate @ColumnTransformer

Necesitas usar pgp_sym_encrypt para escritura y pgp_sym_decrypt para leer Hiciste lo 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;

Debido a que codificar la clave de cifrado en la asignación no parece una muy buena idea, utilizaremos la compatibilidad con PostgreSQL para la configuración definida por el usuario.

Entonces, encrypt.key se almacena en el postgresql.conf archivo de configuración:

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

El el ejemplo está en GitHub y funciona de maravilla.