কম্পিউটার টিউটোরিয়াল

পাইথনে ডেটা সিকিউর করুন: Cryptography লাইব্রেরি দিয়ে এনক্রিপ্ট ও ডিক্রিপ্ট

এই টিউটোরিয়ালে আপনি শিখবেন কীভাবে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করতে হয়, উদাহরণস্বরূপ একটি টেক্সট স্ট্রিং, পাইথনে cryptography লাইব্রেরি ব্যবহার করে।

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

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

এই উদাহরণে, আমরা সিমেট্রিক এনক্রিপশন ব্যবহার করব, অর্থাৎ যে কীটি ডেটা এনক্রিপ্ট করতে ব্যবহৃত হয়েছে, সেটিই ডিক্রিপশন-এর জন্যও ব্যবহারযোগ্য।

এখানে যে cryptography লাইব্রেরি ব্যবহার করা হয়েছে, সেটি AES অ্যালগরিদমের ওপর তৈরি।

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

প্রথমে, cryptography লাইব্রেরি ইনস্টল করতে হবে:

pip3 install cryptography

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()

এক মেসেজ এনক্রিপ্ট করা

এখন, আমরা একটি মেসেজ এনক্রিপ্ট করতে পারি। এটি তিন ধাপের প্রক্রিয়া:

  • ১ - মেসেজটি এনকোড করুন
  • ২ - Fernet ক্লাস ইনিশিয়ালাইজ করুন
  • ৩ - এনকোড করা মেসেজটি encrypt() মেথডে পাস করুন

মেসেজ এনকোড করুন:

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

Fernet ক্লাস ইনিশিয়ালাইজ করুন:

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='

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

মেসেজ ডিক্রিপ্ট করতে, আমরা শুধু Fernet লাইব্রেরি থেকে decrypt() মেথড কল করি। মনে রাখবেন, আমাদের কিও লোড করতে হবে, কারণ মেসেজ ডিক্রিপ্ট করতে কি প্রয়োজন।

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. পাইথনে টেনসরফ্লো ব্যবহার করে টেনসর তৈরি করা এবং মেসেজ প্রদর্শন করার পদ্ধতি

  2. Matplotlib এবং Python ব্যবহার করে একই ফিগারে একাধিক প্লট কীভাবে আঁকা যায়?

  3. পাইথনে scikit-learn দিয়ে ইমেজ আপলোড ও ভিউ করার পদ্ধতি

  4. পাইথনে Seaborn লাইব্রেরি দিয়ে ডেটা ভিজ্যুয়াল রিপ্রেজেন্টেশনের পদ্ধতি