সমাধান করা হয়েছে: ফার্নেট%3A পান্ডা সহ csv-এ সংরক্ষিত স্ট্রিংগুলি ডিক্রিপ্ট করতে পারে না

ফার্নেট হল পাইথনের একটি সিমেট্রিক এনক্রিপশন লাইব্রেরি যা সংবেদনশীল ডেটার জন্য নিরাপদ এবং সহজেই ব্যবহারযোগ্য এনক্রিপশন প্রদান করে। ফার্নেটের জন্য একটি সাধারণ ব্যবহার-কেস হল একটি CSV ফাইলে ডেটা সংরক্ষণ করার আগে এটিকে এনক্রিপ্ট করা, নিশ্চিত করা যে শুধুমাত্র অনুমোদিত পক্ষগুলি এটি অ্যাক্সেস করতে পারে। যাইহোক, একটি CSV ফাইলে এই এনক্রিপ্ট করা স্ট্রিংগুলিকে ডিক্রিপ্ট করা একটু কঠিন হতে পারে, বিশেষ করে পান্ডাস লাইব্রেরি ব্যবহার করার সময়।

এই নিবন্ধে, আমরা Fernet এবং Pandas ব্যবহার করে একটি CSV ফাইলে সংরক্ষিত স্ট্রিং ডিক্রিপ্ট করার সমস্যার সমাধান নিয়ে আলোচনা করব। আমরা কোডটির একটি ধাপে ধাপে ব্যাখ্যা প্রদান করব এবং প্রক্রিয়াটির সাথে জড়িত প্রাসঙ্গিক ফাংশন এবং লাইব্রেরিগুলির মধ্যে অনুসন্ধান করব।

শুরু করার জন্য, আসুন সমস্যাটি বিস্তারিতভাবে আলোচনা করি। একটি CSV ফাইলে ডেটা সংরক্ষণ করার আগে ফার্নেট এনক্রিপশন ব্যবহার করার সময়, ফাইল পড়ার জন্য পান্ডাস ব্যবহার করার সময় ডেটা ডিক্রিপ্ট করা চ্যালেঞ্জিং হতে পারে। এনক্রিপ্ট করা স্ট্রিংগুলির ডিক্রিপশনের সময় তাদের অখণ্ডতা নিশ্চিত করার জন্য সঠিক হ্যান্ডলিং প্রয়োজন।

সমস্যার সমাধান

এই সমস্যার একটি সম্ভাব্য সমাধান হল কাস্টম ফাংশন ব্যবহার করা এবং CSV ফাইল থেকে প্রাপ্ত ডেটাফ্রেমে প্রয়োগ করা। আমরা ফার্নেট লাইব্রেরি ব্যবহার করে এনক্রিপ্ট করা স্ট্রিংগুলিকে ডিক্রিপ্ট করার জন্য একটি ফাংশন তৈরি করব এবং তারপর এনক্রিপ্ট করা ডেটা ধারণকারী পান্ডাস ডেটাফ্রেমে এই ফাংশনটি প্রয়োগ করব।

এখানে কোডটির একটি ধাপে ধাপে ব্যাখ্যা রয়েছে:

1. প্রথমে, আমাদের প্রয়োজনীয় লাইব্রেরিগুলি আমদানি করতে হবে:

import pandas as pd
from cryptography.fernet import Fernet

2. তারপর, আসুন একটি ফার্নেট কী তৈরি করি এবং কিছু নমুনা ডেটা এনক্রিপ্ট করি। অনুমান করুন আমরা নিম্নলিখিত ডেটা এনক্রিপ্ট করেছি এবং দুটি কলাম "ডেটা" এবং "এনক্রিপ্টেড" সহ "encrypted_data.csv" নামে একটি CSV ফাইলে সংরক্ষণ করেছি:

key = Fernet.generate_key()
cipher_suite = Fernet(key)
data = "This is a sample text."
encrypted_data = cipher_suite.encrypt(data.encode("utf-8"))

3. এখন, প্রদত্ত ফার্নেট কী দিয়ে এনক্রিপ্ট করা স্ট্রিংগুলিকে ডিক্রিপ্ট করার জন্য একটি ফাংশন তৈরি করা যাক:

def decrypt_string(encrypted_string, fernet_key):
    cipher_suite = Fernet(fernet_key)
    return cipher_suite.decrypt(encrypted_string.encode("utf-8")).decode("utf-8")

4. আমরা পান্ডাস ব্যবহার করে এনক্রিপ্ট করা ডেটা ধারণকারী CSV ফাইল পড়তে পারি:

csv_data = pd.read_csv('encrypted_data.csv')

5. অবশেষে, 'অ্যাপ্লাই' পদ্ধতি ব্যবহার করে ডেটাফ্রেমের এনক্রিপ্ট করা কলামে 'decrypt_string' ফাংশন প্রয়োগ করুন এবং একটি নতুন কলামে ডিক্রিপ্ট করা ডেটা সংরক্ষণ করুন। মনে রাখবেন যে 'প্রয়োগ' পদ্ধতিতে আপনাকে একটি অতিরিক্ত যুক্তি হিসাবে কীটি পাস করতে হবে:

csv_data['decrypted'] = csv_data['encrypted'].apply(decrypt_string, fernet_key=key)

ফার্নেট লাইব্রেরি

ফার্নেট পাইথনের একটি জনপ্রিয় ক্রিপ্টোগ্রাফিক লাইব্রেরি যা AES সিমেট্রিক-কী ক্রিপ্টোগ্রাফি সহ ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য সহজে ব্যবহারযোগ্য পদ্ধতি প্রদান করে। লাইব্রেরি গ্যারান্টি দেয় যে ফার্নেট ব্যবহার করে এনক্রিপ্ট করা ডেটা আরও ম্যানিপুলেট করা বা কী ছাড়া পড়া যাবে না, ডেটা গোপনীয়তা এবং অখণ্ডতা নিশ্চিত করে। ফার্নেট সিফারটেক্সটগুলির জন্য URL-safe/base64 এনকোডিং ব্যবহার করে, যা এটিকে ফাইল বা ডাটাবেসে এনক্রিপ্ট করা ডেটা সংরক্ষণের জন্য উপযুক্ত করে তোলে।

পান্ডাস লাইব্রেরি

পান্ডাস পাইথনে একটি ওপেন সোর্স ডেটা ম্যানিপুলেশন এবং ডেটা বিশ্লেষণ লাইব্রেরি। এটি ডেটা স্ট্রাকচার, যেমন সিরিজ এবং ডেটাফ্রেম এবং ডেটা পরিচালনা, রূপান্তর এবং ভিজ্যুয়ালাইজ করার জন্য বিভিন্ন ফাংশন প্রদান করে। CSV ফাইল বা SQL ডাটাবেসের মতো স্ট্রাকচার্ড বা ট্যাবুলার ডেটা নিয়ে কাজ করার জন্য পান্ডা বিশেষভাবে উপযোগী। এই লাইব্রেরি ডেটা ম্যানিপুলেশনের অনেক দিককে সরল করে, এটি ডেটা বিশ্লেষণ এবং মেশিন লার্নিংয়ের জন্য একটি অপরিহার্য হাতিয়ার করে তোলে।

উপসংহারে, ফার্নেট এবং পান্ডাস ব্যবহার করে একটি CSV ফাইলে সংরক্ষিত এনক্রিপ্ট করা স্ট্রিংগুলিকে ডিক্রিপ্ট করা এই নিবন্ধে দেওয়া পদক্ষেপগুলি অনুসরণ করে অর্জন করা যেতে পারে। একটি কাস্টম ডিক্রিপশন ফাংশন তৈরি করে এবং এটি ডেটাফ্রেমে প্রয়োগ করে, আমরা কার্যকরভাবে CSV ফাইলে সংরক্ষিত সংবেদনশীল ডেটা ডিক্রিপ্ট করতে পারি।

সম্পর্কিত পোস্ট:

মতামত দিন