Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

क्रिप्टोग्राफी लाइब्रेरी का उपयोग करके पायथन में डेटा को एन्क्रिप्ट और डिक्रिप्ट कैसे करें

इस ट्यूटोरियल में आप सीखेंगे कि डेटा को एन्क्रिप्ट और डिक्रिप्ट कैसे करें, उदा। पायथन में क्रिप्टोग्राफी लाइब्रेरी का उपयोग कर टेक्स्ट की एक स्ट्रिंग।

एन्क्रिप्शन जानकारी को इस तरह से एन्कोड करने की प्रक्रिया है कि केवल अधिकृत पक्ष ही इसे एक्सेस कर सकते हैं। यह हमें डेटा को सुरक्षित रूप से सुरक्षित रखने की अनुमति देता है जिसे हम नहीं चाहते कि कोई भी देखे या एक्सेस करे।

संबंधित:

  • क्रिप्टोग्राफी की मूल बातें

इस उदाहरण में, हम सममित एन्क्रिप्शन का उपयोग करेंगे, जिसका अर्थ है कि हम डेटा को एन्क्रिप्ट करने के लिए जिस कुंजी का उपयोग करते हैं, वह डिक्रिप्शन के लिए भी प्रयोग योग्य है।

हम यहां जिस क्रिप्टोग्राफ़ी लाइब्रेरी का उपयोग करते हैं, वह एईएस एल्गोरिथम के शीर्ष पर बनी है।

पायथन में डेटा एन्क्रिप्ट करें

सबसे पहले, हमें क्रिप्टोग्राफी लाइब्रेरी स्थापित करने की आवश्यकता है:

pip3 install cryptography

क्रिप्टोग्राफ़ी लाइब्रेरी से, हमें Fernet import आयात करने की आवश्यकता है और एक कुंजी बनाना शुरू करें - यह कुंजी सममित एन्क्रिप्शन/डिक्रिप्शन के लिए आवश्यक है।

जनरेट कुंजी

एक कुंजी उत्पन्न करने के लिए, हम generate_key() . को कॉल करते हैं विधि:

from cryptography.fernet import Fernet

def generate_key():
    """
    Generates a key and save it into a file
    """
    key = Fernet.generate_key()
    with open("secret.key", "wb") as key_file:
        key_file.write(key)

कुंजी उत्पन्न करने के लिए हमें उपरोक्त विधि को केवल एक बार निष्पादित करने की आवश्यकता है।

नोट:आपको इस चाबी को सुरक्षित स्थान पर रखना होगा। यदि आप कुंजी खो देते हैं, तो आप उस डेटा को डिक्रिप्ट नहीं कर पाएंगे जो इस कुंजी से एन्क्रिप्ट किया गया था।

कुंजी लोड करें

एक बार जब हम एक कुंजी उत्पन्न कर लेते हैं, तो हमें डेटा को एन्क्रिप्ट करने के लिए कुंजी को अपनी विधि में लोड करने की आवश्यकता होती है:

def load_key():
    """
    Loads the key named `secret.key` from the current directory.
    """
    return open("secret.key", "rb").read()

संदेश एन्क्रिप्ट करें

अब, हम एक संदेश को एन्क्रिप्ट करने के लिए तैयार हैं। यह तीन चरणों वाली प्रक्रिया है:

  • 1 - संदेश को एन्कोड करें
  • 2 - फ़र्नेट क्लास को इनिशियलाइज़ करें
  • 3 - एन्कोडेड संदेश को encrypt() . पर पास करें विधि

संदेश को एन्कोड करें:

message = "message I want to encrypt".encode()

फर्नेट क्लास को इनिशियलाइज़ करें:

f = Fernet(key)

संदेश एन्क्रिप्ट करें:

encrypted_message = f.encrypt(message)

संपूर्ण कोड उदाहरण

पायथन में संदेश को एन्क्रिप्ट करने का एक पूर्ण कार्य उदाहरण नीचे दिया गया है:

from cryptography.fernet import Fernet

def generate_key():
    """
    Generates a key and save it into a file
    """
    key = Fernet.generate_key()
    with open("secret.key", "wb") as key_file:
        key_file.write(key)

def load_key():
    """
    Load the previously generated key
    """
    return open("secret.key", "rb").read()

def encrypt_message(message):
    """
    Encrypts a 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='

पायथन में डेटा डिक्रिप्ट करें

संदेश को डिक्रिप्ट करने के लिए, हम केवल decrypt() . को कॉल करते हैं Fernet . से विधि पुस्तकालय। याद रखें, हमें कुंजी को भी लोड करने की आवश्यकता है, क्योंकि संदेश को डिक्रिप्ट करने के लिए कुंजी की आवश्यकता होती है।

from cryptography.fernet import Fernet

def load_key():
    """
    Load the previously generated key
    """
    return open("secret.key", "rb").read()

def decrypt_message(encrypted_message):
    """
    Decrypts an 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

  1. Matplotlib और Python का उपयोग करके एक ही आकृति में एकाधिक भूखंडों को कैसे प्लॉट किया जा सकता है?

    Matplotlib एक लोकप्रिय पायथन पैकेज है जिसका उपयोग डेटा विज़ुअलाइज़ेशन के लिए किया जाता है। डेटा को विज़ुअलाइज़ करना एक महत्वपूर्ण कदम है क्योंकि यह यह समझने में मदद करता है कि वास्तव में संख्याओं को देखे बिना और जटिल गणना किए बिना डेटा में क्या हो रहा है। यह दर्शकों को मात्रात्मक अंतर्दृष्टि को प्

  1. स्किकिट लर्न लाइब्रेरी का उपयोग पायथन में एक छवि अपलोड करने और देखने के लिए कैसे किया जा सकता है?

    प्री-प्रोसेसिंग डेटा से तात्पर्य डेटा की सफाई, अमान्य डेटा, शोर को हटाना, डेटा को प्रासंगिक मानों से बदलना आदि से है। इसका मतलब हमेशा टेक्स्ट डेटा नहीं होता है; यह चित्र या वीडियो प्रसंस्करण भी हो सकता है। डेटा प्री-प्रोसेसिंग मूल रूप से सभी डेटा (जो विभिन्न संसाधनों या एक संसाधन से एकत्र किया जाता

  1. पायथन में 'सीबॉर्न' लाइब्रेरी का उपयोग करके डेटा को नेत्रहीन रूप से कैसे दर्शाया जा सकता है?

    मशीन लर्निंग डेटा से मॉडल बनाने और पहले कभी नहीं देखे गए डेटा पर सामान्यीकरण करने से संबंधित है। मशीन लर्निंग मॉडल को इनपुट के रूप में प्रदान किया गया डेटा ऐसा होना चाहिए कि इसे सिस्टम द्वारा ठीक से समझा जाए, ताकि यह डेटा की व्याख्या कर सके और परिणाम उत्पन्न कर सके। सीबॉर्न एक पुस्तकालय है जो डेटा