PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment chiffrer une colonne dans Postgres en utilisant Hibernate @ColumnTransformer

Vous devez utiliser pgp_sym_encrypt pour l'écriture et pgp_sym_decrypt pour lire. Vous avez fait le contraire.

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

Étant donné que coder en dur la clé de chiffrement dans le mappage ne semble pas être une très bonne idée, nous utiliserons à la place la prise en charge de PostgreSQL pour les paramètres définis par l'utilisateur.

Ainsi, le encrypt.key est stocké dans postgresql.conf fichier de configuration :

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

Le l'exemple est sur GitHub et fonctionne comme un charme.