ট্র্যাক
/
OCaml
OCaml
/
অনুশীলনী
/
অ্যাটবাশ সাইফার
অ্যাটবাশ সাইফার

অ্যাটবাশ সাইফার

মধ্যম

নির্দেশনা

মধ্যপ্রাচ্যে তৈরি একটি প্রাচীন এনক্রিপশন ব্যবস্থা, অ্যাটবাশ সাইফারের একটি বাস্তবায়ন তৈরি করুন।

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

ল্যাটিন বর্ণমালার জন্য একটি অ্যাটবাশ সাইফার হবে এমন:

Plain:  abcdefghijklmnopqrstuvwxyz
Cipher: zyxwvutsrqponmlkjihgfedcba

এটি খুব দুর্বল একটি সাইফার, কারণ এর সম্ভাব্য কী মাত্র একটি, আর এটি একটি সরল মোনো-অ্যালফাবেটিক সাবস্টিটিউশন সাইফার। তবে সাইফারটির সময়ে এটা হয়তো কোনো সমস্যাই ছিল না।

সাইফারটেক্সট নির্দিষ্ট দৈর্ঘ্যের দলে ভাগ করে লেখা হয়, যেখানে প্রচলিত দলের আকার ৫ অক্ষর, সংখ্যাগুলো অপরিবর্তিত থাকে এবং যতিচিহ্ন বাদ দেওয়া হয়। এর উদ্দেশ্য হলো শব্দের সীমানা দেখে অনুমান করা কঠিন করে তোলা। সব লেখাই ছোট হাতের অক্ষরে এনকোড করা হবে।

উদাহরণ

  • test এনকোড করলে পাওয়া যায় gvhg
  • x123 yes এনকোড করলে পাওয়া যায় c123b vh
  • gvhg ডিকোড করলে পাওয়া যায় test
  • gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt ডিকোড করলে পাওয়া যায় thequickbrownfoxjumpsoverthelazydog

String.lowercase-এর ডিপ্রিকেশন

আপনি কোন সংস্করণের OCaml ইনস্টল করেছেন, তার উপর নির্ভর করে String.lowercase ব্যবহার করা ভালো চোখে দেখা হয় না। 4.03.0 সংস্করণ থেকে String.lowercase ডিপ্রিকেটেড, আর এর বদলে String.lowercase_ascii ব্যবহারের পরামর্শ দেওয়া হয়। তাই লেখার বদলে

String.lowercase "Hello, World!"

ব্যবহার করুন

String.lowercase_ascii "Hello, World!"

আরও উপকারী ফাংশনের জন্য String ডকুমেন্টেশন দেখুন।


সূত্র

Wikipediaলিংকটি নতুন উইন্ডো বা ট্যাবে খোলে
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
OCaml Exercism

অ্যাটবাশ সাইফার শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, OCaml ট্র্যাকের 60টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।