2017-02-24 8 views
5

का उपयोग करके पोस्टग्रेज़ में कॉलम एन्क्रिप्ट करने के लिए कैसे मैं अपने prostrgres डीबी में एक कॉलम एन्क्रिप्ट करने की कोशिश कर रहा हूँ। कॉलम नाम "बाइटा" प्रकार का "परीक्षण" है।हाइबरनेट @ कॉलम ट्रान्सफॉर्मर

मेरे enity कोड से नीचे है,

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

जब मैं इकाई को पुनः प्राप्त करने की कोशिश की, मैं एन्क्रिप्टेड डाटा नीचे की तरह हो रही है। मैं प्रोग्रामिक रूप से डिक्रिप्ट मूल्य कैसे प्राप्त करूं? लेकिन मुझे वास्तविक मान मिलता है यदि मैं एक पोस्टग्रेस चुनिंदा क्वेरी निष्पादित करता हूं।

"test": "\\xc30d04070302474627ea0994ea657bd24401aaa5543862d57524a407e5dbe2ee0f6f0f33ea4f4474f5bc801dca5d32956d41a975505b12ac000f124177bdc2f4507cbfd724d716aaa513ba46f004dfefd3b2b32eb6" 
  1. जब मैं इकाई बने रहने की कोशिश कर रहा हूँ, मैं नीचे त्रुटि हो रही है।

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

+1

मुझे लगता है कि आपने अपनी फ़ंक्शन कॉल को विपरीत रूप से रखा है। आपको 'read = "pgp_sym_decrypt (test,' ') जैसे कुछ का उपयोग करना चाहिए", लिखें = "pgp_sym_encrypt (?,' ')" '। (क्योंकि यह डीबी में एन्क्रिप्ट किया गया है और आप अपने आवेदन में डिक्रिप्ट करना चाहते हैं)। – pozs

+0

लेकिन मुझे यकीन नहीं है कि क्या आपकी कुंजी को वैसे भी एम्बेड करने का सही स्थान है। – pozs

उत्तर

10

आप पढ़ने के लिए लिखने के लिए pgp_sym_encrypt और pgp_sym_decrypt उपयोग करने के लिए की जरूरत है। आपने विपरीत किया

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

वास्तव में, मैं इतना है कि मैं भी wrote an article about it अपने प्रश्न पसंद आया। example is on GitHub और एक आकर्षण की तरह काम कर रहा है।

+0

उत्तर देने के लिए धन्यवाद। परिवर्तन के बाद एक ही मुद्दा। और मैं भी सोच रहा हूं, मुझे अपने बाकी एपीआई के माध्यम से डिक्रिप्ट डेटा क्यों नहीं मिला। –

+0

मैंने इसके बारे में एक ब्लॉग पोस्ट भी लिखा था। –

संबंधित मुद्दे