কম্পিউটার

ক্রিপ্টোগ্রাফি লাইব্রেরি ব্যবহার করে পাইথনে কীভাবে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করবেন

এই টিউটোরিয়ালে আপনি শিখবেন কিভাবে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করতে হয়, যেমন পাইথনে ক্রিপ্টোগ্রাফি লাইব্রেরি ব্যবহার করে পাঠ্যের একটি স্ট্রিং।

এনক্রিপশন হল তথ্যকে এমনভাবে এনকোড করার প্রক্রিয়া যাতে শুধুমাত্র অনুমোদিত পক্ষই এটি অ্যাক্সেস করতে পারে। এটি আমাদের নিরাপদে ডেটা সুরক্ষিত করার অনুমতি দেয় যা আমরা চাই না যে কেউ দেখতে বা অ্যাক্সেস করুক।

সম্পর্কিত:

  • ক্রিপ্টোগ্রাফি বেসিকস

এই উদাহরণে, আমরা সিমেট্রিক এনক্রিপশন ব্যবহার করব, যার মানে আমরা ডেটা এনক্রিপ্ট করতে যে কী ব্যবহার করেছি, সেটি ডিক্রিপশনের জন্যও ব্যবহারযোগ্য৷

আমরা এখানে যে ক্রিপ্টোগ্রাফি লাইব্রেরিটি ব্যবহার করি সেটি AES অ্যালগরিদমের উপরে তৈরি করা হয়েছে।

পাইথনে ডেটা এনক্রিপ্ট করুন

প্রথমে, আমাদের ক্রিপ্টোগ্রাফি লাইব্রেরি ইনস্টল করতে হবে:

pip3 install cryptography

ক্রিপ্টোগ্রাফি লাইব্রেরি থেকে, আমাদের Fernet আমদানি করতে হবে এবং একটি কী তৈরি করা শুরু করুন - এই কীটি সিমেট্রিক এনক্রিপশন/ডিক্রিপশনের জন্য প্রয়োজন৷

কী তৈরি করুন

একটি কী তৈরি করতে, আমরা 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. কিভাবে TensorFlow একটি টেনসর তৈরি করতে এবং পাইথন ব্যবহার করে একটি বার্তা প্রদর্শন করতে ব্যবহার করা যেতে পারে?

  2. কিভাবে matplotlib এবং Python ব্যবহার করে একই চিত্রে একাধিক প্লট প্লট করা যায়?

  3. পাইথনে একটি ছবি আপলোড এবং দেখার জন্য কীভাবে স্কিট লার্ন লাইব্রেরি ব্যবহার করা যেতে পারে?

  4. পাইথনে 'seaborn' লাইব্রেরি ব্যবহার করে কীভাবে ডেটা দৃশ্যমানভাবে উপস্থাপন করা যেতে পারে?