2017-02-24 3 views
5

Ich versuche, eine Spalte in meinem Prostrgres DB zu verschlüsseln. Der Spaltenname ist "test" vom Typ "bytea".Wie eine Spalte in Postgres mit Hibernate @ColumnTransformer zu verschlüsseln

Mein enity Code unten ist,

@ColumnTransformer(
      forColumn="test", 
      read="pgp_sym_encrypt(test::bytea, 'mySecretKey')", 
      write="pgp_sym_decrypt(?, 'mySecretKey')") 
private String test; 

Wenn ich die Entität abzurufen versucht, erhalte ich die verschlüsselten Daten wie unten. Wie bekomme ich den entschlüsselten Wert programmgesteuert? Aber ich bekomme den tatsächlichen Wert Wenn ich eine Postgres-Select-Abfrage ausführen.

"test": "\\xc30d04070302474627ea0994ea657bd24401aaa5543862d57524a407e5dbe2ee0f6f0f33ea4f4474f5bc801dca5d32956d41a975505b12ac000f124177bdc2f4507cbfd724d716aaa513ba46f004dfefd3b2b32eb6" 
  1. Wenn ich an das Unternehmen zu beharren versuchen, ich bin die unten Fehler.

ERROR: column "test" is of type bytea but expression is of type character varying

+1

Ich denke, Sie haben Ihre Funktionsaufrufe invers platziert. Sie sollten so etwas wie 'lesen =" pgp_sym_decrypt (test, '') ", schreiben =" pgp_sym_encrypt (?, '' ') "'. (Weil es in der DB verschlüsselt ist und Sie in Ihrer Anwendung entschlüsselt werden wollen). – pozs

+0

Aber ich bin mir nicht sicher, ob das der richtige Ort ist, um deinen Schlüssel trotzdem einzubetten. – pozs

Antwort

10

Sie benötigen pgp_sym_encrypt für Schreib- und pgp_sym_decrypt für Lese zu verwenden. Du hast das Gegenteil gemacht.

@ColumnTransformer(
      forColumn="test", 
      read="pgp_sym_decrypt(test::bytea, 'mySecretKey')", 
      write="pgp_sym_encrypt(?, 'mySecretKey')") 
private String test; 

Tatsächlich möchte ich Ihre Frage so sehr, dass ich auch wrote an article about it. Die example is on GitHub und funktioniert wie ein Charme.

+0

Danke für die Antwort. Gleiches Problem nach der Änderung. Und ich frage mich auch, warum ich die entschlüsselten Daten nicht über meine Rest-API bekomme. –

+0

Ich habe sogar einen Blogeintrag darüber geschrieben. –

Verwandte Themen