सर्वश्रेष्ठ तरीका क्लाइंट या एप्लिकेशन सर्वर पर क्रिप्टो करना है, इसलिए डेटाबेस को पता नहीं है कि कुंजियाँ क्या हैं और डेटा को डिक्रिप्ट नहीं कर सकती हैं। अगर क्लाइंट/ऐपसर्वर किसी भिन्न होस्ट पर हैं, तो और भी बेहतर।
यदि आपका डेटाबेस आपके लिए डेटा को एन्क्रिप्ट और डिक्रिप्ट कर रहा है, तो यह डेटाबेस के साथ-साथ चाबियों के चोरी होने की चपेट में है।
यदि आप pgcrypto के इन-डेटाबेस क्रिप्टो फ़ंक्शंस का उपयोग करते हैं, तो आप एप्लिकेशन को डेटा के साथ कुंजी भेज सकते हैं, जो कम से कम कुछ हद तक मददगार है। यदि कोई सहायक sysadmin आक्रामक स्टेटमेंट लॉगिंग या स्वचालित योजना डंपिंग को चालू करता है, और अंत में यदि कुंजियाँ डेटाबेस मशीन पर जा रही हैं, तो वे अधिक असुरक्षित हैं यदि वे नहीं हैं . एक हमलावर जो डेटाबेस मशीन का नियंत्रण लेता है, लॉग सेटिंग्स को भी बदल सकता है, पोस्टग्रेस्क्ल बायनेरिज़ को बदल सकता है, या इस तरह से कुंजियों और डेटा को कैप्चर करने के लिए ट्रैफ़िक को सूंघ सकता है।
यदि एपसर्वर और डीबी एक ही मशीन पर हैं और एक ही भूमिका (भूमिकाओं) द्वारा प्रबंधित किए जाते हैं, तो उन्हें अलग करने के बारे में चिंता करने की कोई बात नहीं है, और यह केवल pgcrypto का उपयोग करने के लिए समझदार हो सकता है।
किसी भी तरह, नमक याद रखें!