एन्क्रिप्शन
mar आपको अपने डेटाबेस में केवल फ़ील्ड एन्क्रिप्ट करने का एक तरीका प्रदान करता है। प्रदान किया गया एन्क्रिप्शन बैकएंड एक-तरफ़ा एन्क्रिप्शन के लिए अनुमति देता है (HASH backend) साथ ही दो-तरफ़ा एन्क्रिप्शन / डिक्रिप्शन (FERNET backend).
!!!चेतावनी, कृपया ध्यान दें कि काम करने के लिए एन्क्रिप्शन के लिए क्रमबद्ध करना में, आपको एक वैकल्पिक एन्क्रिप्शन पैकेज स्थापित करने की आवश्यकता है।
1 | |
!!! चेतावनी: एन्क्रिप्ट \ _ बैकएंड जोड़ने से डेटाबेस कॉलम प्रकार TEमें बदल जाता है, जिसे माइग्रेशन (एलेम्बिक) या मैनुअल परिवर्तनों के माध्यम से db में परिलक्षित करने की आवश्यकता होती है
क्षेत्र एन्क्रिप्शन परिभाषित करें
किसी फ़ील्ड को एन्क्रिप्ट करने के लिए, आपको कम से कम एन्क्रिप्ट \ _ गुप्त और एन्क्रिप्ट \ _ बैकएंड मापदंडों को पास करना होगा।
1 2 3 4 5 6 7 8 9 10 11 12 | |
!!!चेतावनी आप प्राथमिक \ _ कुंजी स्तंभों और संबंधपरक श्रृंखला (ForeignKey and ManyToMany) को छोड़कर सभी फ़ील्ड प्रकारों को एन्क्रिप्ट कर सकते हैं। अधिक जानकारी के लिए बैकएंड विवरण देखें।
उपलब्ध बैकएंड
हैश
HASH एक तरफ़ा हैश है (like a password) पुनर्प्राप्त होने पर इसे कभी डिक्रिप्ट नहीं किया जाता है
इसे सेट करने के लिए, उपयुक्त बैकएंड मान पास करें।
1 2 3 4 | |
कृपया ध्यान दें कि चूंकि यह बैकएंड कभी भी संग्रहीत मान को डिक्रिप्ट नहीं करेगा, यह केवल स्ट्रिंग फ़ील्ड पर लागू होता है। उपयोग किया गया हैश एक sha512 हैश है, इसलिए फ़ील्ड की लंबाई> = 128 होनी चाहिए।
चेतावनी: HASH बैकएंड में, आप पूर्ण मान से फ़िल्टर कर सकते हैं, लेकिन इसमें शामिल फ़िल्टर काम नहीं करेंगे क्योंकि एन्क्रिप्टेड मानों की तुलना की जाती है
!!!ध्यान दें कि प्रदान किया गया एन्क्रिप्ट \ _ गुप्त पहले खुद को हैश करता है और इसे नमक के रूप में उपयोग करता है, इसलिए आपको संग्रहीत स्ट्रिंग के साथ तुलना करने के लिए क्रमबद्ध करना में इस चरण को फिर से बनाने की आवश्यकता है। ऑर्डर \ _ by काम नहीं करेगा क्योंकि एन्क्रिप्टेड स्ट्रिंग्स की तुलना करना आपके लिए मज़बूती से सॉर्ट करना असंभव बनाता है।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
फेनेट
FERNET एक दो-तरफ़ा एन्क्रिप्शन / डिक्रिप्शन बैकएंड है
इसे सेट करने के लिए, उपयुक्त बैकएंड मान पास करें।
1 2 3 | |
मान डेटाबेस के लिए अपने रास्ते पर एन्क्रिप्ट किया गया है और इसके रास्ते पर डिक्रिप्ट किया गया है। सभी प्रकार के लिए उपलब्ध है, क्योंकि रिटर्न मान संबंधित पायथन प्रकार के लिए पार्स किया गया है।
!!! चेतावनी ध्यान दें कि FERNET बैकएंड में, आप पूरी तरह से फ़िल्टरिंग की संभावना खो देते हैं क्योंकि एन्क्रिप्टेड मान का हिस्सा टाइमस्टैम्प है। वही क्रमबद्ध करना के लिए जाता है क्योंकि एन्क्रिप्टेड स्ट्रिंग्स की तुलना की जाती है, इसलिए आप मज़बूती से सॉर्ट नहीं कर सकते।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
कस्टम बैकएंड
यदि आप अन्य प्रकार के एन्क्रिप्शन का समर्थन करना चाहते हैं (i.e. AES), आप अपना स्वयं का एन्क्रिप्शन बैकएंड प्रदान कर सकते हैं।
बैकएंड सेट करने के लिए, आपको बस ormar.ds को उपवर्ग करना होगा। Entend वर्ग और आवश्यक बैकएंड प्रदान करें।
एक उदाहरण वर्चुअल बैकएंड (which does nothing) mइस तरह देखो:
1 2 3 4 5 6 7 8 9 | |
इस बैकएंड का उपयोग करने के लिए, CUSTOM पर \ _ बैकएंड सेट करें और एन्क्रिप्ट \ _ कस्टम \ _ बैकएंड के माध्यम से एक पैरामीटर के रूप में अपना बैकएंड प्रदान करें।
1 2 3 4 5 6 7 8 9 | |