সিজার সাইফার
সিজার সাইফার হলো ইতিহাসের সবচেয়ে বিখ্যাত ক্রিপ্টোগ্রাফিক অ্যালগরিদমগুলোর একটি। এটি রোমান সম্রাট জুলিয়াস সিজারের নামে নামকরণ করা হয়েছে, যিনি এটি তার গোপন সামরিক যোগাযোগে ব্যবহার করতেন।
কার্যপ্রণালী
সিজার সাইফার একটি শিফট সাইফার। এতে প্রতিটি অক্ষরকে বর্ণমালায় একটি নির্দিষ্ট সংখ্যক স্থান এগিয়ে বা পিছিয়ে সরানো হয়।
মূল ধারণা
যদি আমাদের শিফট ভ্যালু হয় k
, তাহলে:
- প্রতিটি অক্ষর
P
কেC
তে রূপান্তরিত করা হয় - যেখানে
C = (P + k) mod 26
(ইংরেজি বর্ণমালার জন্য)
বাংলা বর্ণমালায় সিজার সাইফার
বাংলা বর্ণমালায় ৫০টি অক্ষর রয়েছে। আমরা সিজার সাইফার এভাবে প্রয়োগ করতে পারি:
বাংলা বর্ণমালার ক্রম:
অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ
ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য র ল শ ষ স হ ড় ঢ় য় ৎ ং ঃ ঁ
উদাহরণ (শিফট ৩)
মূল বার্তা: “আমি ভালো আছি”
এনক্রিপশন প্রক্রিয়া:
- আ → ঈ (৩ স্থান এগিয়ে)
- ম → র (৩ স্থান এগিয়ে)
- ি → ঊ (৩ স্থান এগিয়ে)
এনক্রিপ্টেড বার্তা: “ঈরঊ ভাল লাোো ঈছছঊ”
ইংরেজিতে উদাহরণ
আরো সহজ বোঝার জন্য ইংরেজি উদাহরণ:
শিফট ৩ (সিজারের মূল পদ্ধতি):
সাধারণ: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
শিফট ৩: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
উদাহরণ:
- মূল: “HELLO WORLD”
- এনক্রিপ্ট: “KHOOR ZRUOG”
গাণিতিক উপস্থাপনা
এনক্রিপশন:
C = (P + k) mod n
ডিক্রিপশন:
P = (C - k) mod n
যেখানে:
P
= প্লেইনটেক্সট অক্ষরের অবস্থানC
= সাইফারটেক্সট অক্ষরের অবস্থানk
= শিফট ভ্যালু (কী)n
= বর্ণমালার অক্ষর সংখ্যা
প্রোগ্রামিং উদাহরণ
Python কোড:
def caesar_encrypt(text, shift):
result = ""
for char in text:
if char.isalpha():
ascii_offset = 65 if char.isupper() else 97
result += chr((ord(char) - ascii_offset + shift) % 26 + ascii_offset)
else:
result += char
return result
def caesar_decrypt(text, shift):
return caesar_encrypt(text, -shift)
# উদাহরণ ব্যবহার
plaintext = "HELLO WORLD"
shift = 3
encrypted = caesar_encrypt(plaintext, shift)
print(f"এনক্রিপ্টেড: {encrypted}")
decrypted = caesar_decrypt(encrypted, shift)
print(f"ডিক্রিপ্টেড: {decrypted}")
সিজার সাইফারের সুবিধা
- সহজ বাস্তবায়ন: খুবই সরল অ্যালগরিদম
- দ্রুত: কম্পিউটেশনাল জটিলতা O(n)
- শিক্ষামূলক: ক্রিপ্টোগ্রাফির মূল ধারণা বুঝতে সাহায্য করে
সিজার সাইফারের অসুবিধা
- ছোট কী স্পেস: মাত্র 25টি সম্ভাব্য কী (ইংরেজির জন্য)
- ব্রুট ফোর্স আক্রমণ: সব কী চেষ্টা করা সহজ
- ফ্রিকোয়েন্সি অ্যানালাইসিস: ভাষার প্রাকৃতিক প্যাটার্ন রক্ষা করে না
ক্রিপ্ট অ্যানালাইসিস
ব্রুট ফোর্স আক্রমণ
ইংরেজি বর্ণমালার জন্য মাত্র ২৫টি সম্ভাব্য শিফট রয়েছে। তাই সবগুলো চেষ্টা করে দেখা সম্ভব:
def brute_force_caesar(ciphertext):
print("সম্ভাব্য ডিক্রিপশনগুলো:")
for shift in range(26):
result = caesar_decrypt(ciphertext, shift)
print(f"শিফট {shift}: {result}")
# উদাহরণ
brute_force_caesar("KHOOR ZRUOG")
ফ্রিকোয়েন্সি অ্যানালাইসিস
দীর্ঘ টেক্সটের জন্য, আমরা অক্ষরের ব্যবহারের ফ্রিকোয়েন্সি দেখে শিফট ভ্যালু বের করতে পারি।
ঐতিহাসিক ব্যবহার
- জুলিয়াস সিজার: শিফট ৩ ব্যবহার করতেন সামরিক বার্তায়
- রোমান সেনাবাহিনী: গোপন নির্দেশ পাঠাতে ব্যবহার করত
- প্রথম বিশ্বযুদ্ধ: কিছু সরল সামরিক যোগাযোগে ব্যবহৃত হয়
আধুনিক প্রয়োগ
যদিও নিরাপত্তার জন্য আর ব্যবহার করা হয় না, তবুও:
- শিক্ষা: ক্রিপ্টোগ্রাফির প্রাথমিক ধারণা শেখানো
- পাজল গেম: ক্রসওয়ার্ড ও ধাঁধায় ব্যবহার
- ROT13: ইন্টারনেটে স্পয়লার লুকানোর জন্য
উন্নত সংস্করণ
এফাইন সাইফার (Affine Cipher)
সিজার সাইফারের একটি সাধারণীকরণ:
C = (aP + b) mod n
ভিজেনার সাইফার
একাধিক সিজার সাইফারের সমন্বয়, যা আরো জটিল।
পরবর্তী অধ্যায়ে আমরা ভিজেনার সাইফার নিয়ে বিস্তারিত আলোচনা করবো।