sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man krypterar en kolumn i Postgres med Hibernate @ColumnTransformer

Du måste använda pgp_sym_encrypt för skriv och pgp_sym_decrypt för läsning. Du gjorde tvärtom.

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

Eftersom hårdkodning av krypteringsnyckeln i mappningen inte låter som en särskilt bra idé kommer vi att använda PostgreSQL-stödet för användardefinierade inställningar istället.

Så, encrypt.key lagras i postgresql.conf konfigurationsfil:

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

exempel finns på GitHub och fungerar som en charm.



  1. Hierarkisk fråga - Räknar poster som tillhör överordnade och underordnade platser

  2. med villkorlig logik:kontrollera om posten finns; Om den gör det, uppdatera den, om inte, skapa den

  3. Mysql sammanfoga två tabeller summa, var och grupp efter

  4. mysql kontrollera sammanställning av en tabell