इस ट्यूटोरियल में आप सीखेंगे कि क्रिप्टोग्राफी लाइब्रेरी का उपयोग करके Python में डेटा को कैसे एन्क्रिप्ट और डिक्रिप्ट करें, उदाहरण के लिए टेक्स्ट की एक स्ट्रिंग।
एन्क्रिप्शन सूचना को इस तरह एन्कोड करने की प्रक्रिया है कि केवल अधिकृत पक्ष ही उस तक पहुंच सकें। यह हमें उस डेटा को सुरक्षित रूप से संरक्षित करने की अनुमति देता है जिसे हम नहीं चाहते कि कोई भी देखे या एक्सेस करे।
- क्रिप्टोग्राफी बेसिक्स
इस उदाहरण में, हम सिमेट्रिक एन्क्रिप्शन का उपयोग करेंगे, जिसका अर्थ है कि डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली वही कुंजी डिक्रिप्शन के लिए भी उपयोग योग्य है।
यहां उपयोग की जाने वाली क्रिप्टोग्राफी लाइब्रेरी AES एल्गोरिदम के शीर्ष पर बनी है।
Python में डेटा एन्क्रिप्ट करें
सबसे पहले, हमें क्रिप्टोग्राफी लाइब्रेरी इंस्टॉल करने की आवश्यकता है:
pip3 install cryptography
क्रिप्टोग्राफी लाइब्रेरी से, हमें Fernet आयात करने और कुंजी जनरेट करना शुरू करने की आवश्यकता है - यह कुंजी सिमेट्रिक एन्क्रिप्शन/डिक्रिप्शन के लिए आवश्यक है।
कुंजी जनरेट करें
कुंजी जनरेट करने के लिए, हम generate_key() मेथड को कॉल करते हैं:
from cryptography.fernet import Fernet
def generate_key():
""" कुंजी जनरेट करता है और इसे फ़ाइल में सेव करता है """
key = Fernet.generate_key()
with open("secret.key", "wb") as key_file:
key_file.write(key)
हमें कुंजी जनरेट करने के लिए उपरोक्त मेथड को केवल एक बार निष्पादित करने की आवश्यकता है।
नोट: आपको इस कुंजी को सुरक्षित स्थान पर रखना होगा। यदि आप कुंजी खो देते हैं, तो आप इस कुंजी से एन्क्रिप्ट किए गए डेटा को डिक्रिप्ट नहीं कर पाएंगे।
कुंजी लोड करें
एक बार कुंजी जनरेट हो जाने के बाद, हमें डेटा एन्क्रिप्ट करने के लिए अपनी मेथड में कुंजी लोड करने की आवश्यकता है:
def load_key():
""" वर्तमान डायरेक्टरी से `secret.key` नामक कुंजी लोड करता है। """
return open("secret.key", "rb").read()
संदेश एन्क्रिप्ट करें
अब, हम संदेश एन्क्रिप्ट करने के लिए तैयार हैं। यह तीन चरणों की प्रक्रिया है:
- 1 - संदेश को एन्कोड करें
- 2 - Fernet क्लास को इनिशियलाइज़ करें
- 3 - एन्कोडेड संदेश को
encrypt()मेथड में पास करें
संदेश को एन्कोड करें:
message = "message I want to encrypt".encode()
Fernet क्लास को इनिशियलाइज़ करें:
f = Fernet(key)
संदेश एन्क्रिप्ट करें:
encrypted_message = f.encrypt(message)
पूर्ण कोड उदाहरण
नीचे Python में संदेश एन्क्रिप्ट करने का एक पूर्ण कार्यशील उदाहरण है:
from cryptography.fernet import Fernet
def generate_key():
""" कुंजी जनरेट करता है और इसे फ़ाइल में सेव करता है """
key = Fernet.generate_key()
with open("secret.key", "wb") as key_file:
key_file.write(key)
def load_key():
""" पहले से जनरेट की गई कुंजी लोड करें """
return open("secret.key", "rb").read()
def encrypt_message(message):
""" संदेश एन्क्रिप्ट करता है """
key = load_key()
encoded_message = message.encode()
f = Fernet(key)
encrypted_message = f.encrypt(encoded_message)
print(encrypted_message)
if __name__ == "__main__":
encrypt_message("encrypt this message")
आउटपुट:
b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4='
Python में डेटा डिक्रिप्ट करें
संदेश को डिक्रिप्ट करने के लिए, हम Fernet लाइब्रेरी से decrypt() मेथड को कॉल करते हैं। याद रखें, हमें कुंजी लोड करने की भी आवश्यकता है, क्योंकि संदेश को डिक्रिप्ट करने के लिए कुंजी की आवश्यकता होती है।
from cryptography.fernet import Fernet
def load_key():
""" पहले से जनरेट की गई कुंजी लोड करें """
return open("secret.key", "rb").read()
def decrypt_message(encrypted_message):
""" एन्क्रिप्टेड संदेश डिक्रिप्ट करता है """
key = load_key()
f = Fernet(key)
decrypted_message = f.decrypt(encrypted_message)
print(decrypted_message.decode())
if __name__ == "__main__":
decrypt_message(b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4=')
आउटपुट:
encrypt this message