PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So verschlüsseln Sie eine Spalte in Postgres mit Hibernate @ColumnTransformer

Sie müssen pgp_sym_encrypt verwenden für schreiben und pgp_sym_decrypt zum lesen. Du hast das Gegenteil getan.

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

Da es sich nicht nach einer sehr guten Idee anhört, den Verschlüsselungsschlüssel im Mapping fest zu codieren, verwenden wir stattdessen die PostgreSQL-Unterstützung für benutzerdefinierte Einstellungen.

Also der encrypt.key wird in der postgresql.conf gespeichert Konfigurationsdatei:

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

Der Beispiel ist auf GitHub und funktioniert wie ein Zauber.