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

ব্লোফিশ অ্যালগরিদমে ডেটা এনক্রিপশন ও ডিক্রিপশন কী?


ব্লোফিশ (Blowfish) অ্যালগরিদমে এনক্রিপশন ও ডিক্রিপশন

Blowfish ব্রুস স্নাইয়ার (Bruce Schneier) দ্বারা ১৯৯৩ সালের ডিসেম্বরে আবিষ্কৃত একটি সিমেট্রিক ব্লক সাইফার অ্যালগরিদম। এর বেশ কিছু সুবিধা আছে: হার্ডওয়্যার ইমপ্লিমেন্টেশনে উপযোগী ও কার্যকর, কোনো লাইসেন্স লাগে না। মৌলিক অপারেটর: টেবিল লুকআপ, যোগ, XOR। টেবিলে চারটি S-বক্স এবং একটি P-অ্যারে থাকে।

Blowfish-এর কাঠামো

  • ফাইস্টেল রাউন্ড বেসড সাইফার। F-ফাংশনের ডিজাইন DES-এর সিদ্ধান্তগুলো সরলীকরণ করে সফটওয়্যারে বেশি গতি ও দক্ষতা দিয়ে একই নিরাপত্তা দেয়।
  • ৬৪-বিট সিমেট্রিক ব্লক সাইফার, ভেরিয়েবল-লেন্থ কী: ৩২ থেকে ৪৪৮ বিট (১৪ বাইট)।
  • ৬৪-বিট প্লেইনটেক্সটকে কার্যকর ও নিরাপদে ৬৪-বিট সাইফারটেক্সটে রূপান্তর করে।
  • অপারেটর: টেবিল লুকআপ, মডুলাস, যোগ, বিটওয়াইজ XOR—৩২-বিট প্রসেসরে এনক্রিপশন/ডিক্রিপশন টাইম মিনিমাইজ করতে।

DES와의 পার্থক্য

  • DES-এর মতো Blowfish-ও ১৬ রাউন্ড ফাইস্টেল নেটওয়ার্ক ব্যবহার করে।
  • DES শুধু ডান ৩২ বিট পরিবর্তন করে পরবর্তী রাউন্ডের বাম ৩২ বিট তৈরি করে।
  • Blowfish-এ প্রতিটি রাউন্ডে বাম ও ডান ৩২ বিট দুটোই পরিবর্তন হয়।
  • Blowfish বাম ৩২ বিটে XOR অপারেশন করে F-ফাংশনে যাওয়ার আগে বা ডান ৩২ বিটে প্রপগেট করার আগে।
  • ১৬ রাউন্ডের পর দুটি XOR অপারেশন এবং একটি সোয়াপ অপারেশন থাকে—DES-এর পারমিউটেশন ফাংশন থেকে আলাদা।

এনক্রিপশন প্রসেস

  • দুই ইনপুট: প্লেইন টেক্সট (ইমেজ/ডেটা) এবং এনক্রিপশন কী।
  • ওরিজিনাল ইমেজ ডেটা বিট স্ট্রিমকে Blowfish ব্লক দৈর্ঘ্য অনুযায়ী ব্লকে ভাগ করা হয়।
  • ইমেজ হেডার এনক্রিপ্ট করা হয় না; বিটম্যাপ পিক্সেল/অ্যারে হেডারের ঠিক পরে শুরু হয়।
  • বাইট কম্পোনেন্ট রো-অর্ডারে (বাম থেকে ডান) সংরক্ষিত, প্রতিটি রো একটি স্ক্যান লাইন। রোগুলো টপ টু বটম এনক্রিপ্ট হয়।

ডিক্রিপশন প্রসেস

  • এনক্রিপ্টেড ইমেজকে একই ব্লক দৈর্ঘ্যে (টপ টু বটম) ভাগ করা হয়।
  • প্রথম ব্লক ডিক্রিপশন ফাংশনে যায়, একই এনক্রিপশন কী ব্যবহার হয় কিন্তু সাব-কীগুলো রিভার্স অর্ডারে প্রয়োগ হয়।
  • প্রক্রিয়া টপ টু বটম সব ব্লকে সম্প্রসারিত হয়।

Blowfish বেসিক অ্যালগরিদম

Divide x into two 32-bit halves: xL, xR
For i = 1 to 16:
    xL = xL XOR Pi
    xR = F(xL) XOR xR
    Swap xL and xR
After 16th round: Swap xL and xR again (undo last swap)
Ciphertext = concatenation of xL and xR
xR = xR XOR P17
xL = xL XOR P18

  1. ব্লোফিশ এনক্রিপশন অ্যালগরিদম কী?

  2. তথ্য নিরাপত্তাতে AES এনক্রিপশন ও ডিক্রিপশন কী?

  3. সি ভাষায় অ্যালগরিদম এবং ফ্লোचार্ট (Algorithm and Flowchart)

  4. ডেটা স্ট্রাকচারে টাইম এবং স্পেস কমপ্লেক্সিটি