কম্পিউটার

কীভাবে আপনার নিজের সিজার সাইফার এনকোডার লিখবেন

আপনি কি কখনও সিজার সাইফার শুনেছেন৷ ?

জুলিয়াস সিজার তার শত্রুদের কাছ থেকে গোপন বার্তা গোপন করার জন্য এই কৌশলটি ব্যবহার করেছিলেন!

সিজার সাইফার হল সবচেয়ে আদিম এনক্রিপশন কৌশলগুলির মধ্যে একটি।

এই সিস্টেমের পিছনে মূল ধারণা হল অক্ষরগুলি ঘোরানো বর্ণমালায় অবস্থানের একটি x সংখ্যা .

উদাহরণস্বরূপ, x = 1 দিয়ে , একটি 'A' হয়ে যায় 'B', একটি 'C' হয়ে যায় 'D' ইত্যাদি।

কীভাবে আপনার নিজের সিজার সাইফার এনকোডার লিখবেন

তাহলে আমরা কীভাবে এটি কোডে প্রয়োগ করব?

আপনি জিজ্ঞাসা করে আনন্দিত, এটি দেখা যাচ্ছে যে এটি দেখতে যতটা কঠিন নয়। আমরা এই সত্যটির সুবিধা নিতে যাচ্ছি যে অক্ষরগুলিকে সংখ্যা (ASCII কোড) দ্বারা প্রতিনিধিত্ব করা যেতে পারে, যা অক্ষরগুলিকে ঘোরানোর কাজটিকে শুধুমাত্র দুটি সংখ্যা একসাথে যোগ করার বিষয় করে তুলবে৷

আপনার নিজের সিজার সাইফার কনভার্টার তৈরি করা

আমরা একটি ইনপুট স্ট্রিংকে একটি পূর্ণসংখ্যা অ্যারেতে রূপান্তর করে শুরু করব:

ascii = "test".chars.map(&:ord)

আসুন এটি ভেঙে ফেলা যাক :

অক্ষর পদ্ধতি স্ট্রিংকে অক্ষরগুলির একটি অ্যারেতে বিভক্ত করে এবং এটি একটি গণনাকারী প্রদান করে। ফলস্বরূপ আমরা ম্যাপ কল করতে পারি অ্যারেতে৷

মানচিত্র পদ্ধতিটি খুবই কার্যকর যখন আমরা একটি অ্যারের সমস্ত উপাদানকে কোনোভাবে রূপান্তর করতে চাই। মানচিত্রের রিটার্ন মান রূপান্তরিত উপাদান সহ আরেকটি অ্যারে।

দ্রষ্টব্য:এই সিনট্যাক্সের প্রয়োজন রুবি 1.9+, এবং এটি এর সমতুল্য:

ascii = "test".chars.map { |c| c.ord }

যেহেতু আমরা প্রতিটি অক্ষরকে তার সংশ্লিষ্ট ASCII মানতে পরিণত করতে চাই, তাই আমরা ord বলি অ্যারের প্রতিটি উপাদানে পদ্ধতি।

আমাদের উদাহরণে, আউটপুট হবে এই:

[116, 101, 115, 116]

ঘূর্ণন সময়

দারুণ!

পরবর্তী ধাপ হল আমরা যতগুলি ঘূর্ণন চাই তা যোগ করা। আমরা মানচিত্র  ব্যবহার করে এটি করতে পারি আবার:

shifted = ascii.map { |c| c + 5 }
=> [121, 106, 120, 121]

এখন আমরা সংখ্যাগুলিকে অক্ষরে ফিরিয়ে আনতে পারি, এবং তাদের সাথে যোগ দিতে পারি, যা আমাদের এনক্রিপ্ট করা স্ট্রিং দেবে:

shifted.map { |c| c.chr }.join
=> "yjxy"

আমাদের আসল স্ট্রিং পুনরুদ্ধার করার জন্য আমাদের যা করতে হবে তা হল একই পদ্ধতি আবার প্রয়োগ করতে হবে, কিন্তু এবার বাম দিকে সরান৷

আমরা প্রাথমিকভাবে ব্যবহার করেছি একই পরিমাণ অবস্থানের দ্বারা স্থানান্তর করা গুরুত্বপূর্ণ; অন্যথায়, আমরা আমাদের আসল ডেটা পুনরুদ্ধার করব না।

চূড়ান্ত কোড এবং বিকল্প সংস্করণ

আপনি এখানে সমাপ্ত সিজার সাইফার কোড খুঁজে পেতে পারেন।

এটি একটি প্রদত্ত স্ট্রিংয়ের জন্য সম্ভাব্য 26টি পুনরাবৃত্তি তৈরি করে এবং এটি মোড়ানোও পরিচালনা করে (পোস্টের উদাহরণগুলি নয়)।

এছাড়াও একটি বিকল্প সংস্করণ রয়েছে যা Array#rotate

ব্যবহার করে

আপনি এটি পছন্দ করতে পারেন:
রুবি স্ট্রিং বিন্যাস


  1. কিভাবে আপনার নিজের YouTube চ্যানেল তৈরি করবেন

  2. কিভাবে আপনার নিজের QR কোড তৈরি করবেন?

  3. রুবি ফাংশন এবং পদ্ধতি:আপনার নিজের সংজ্ঞায়িত কিভাবে

  4. কিভাবে আপনার নিজের ব্রাউজার এক্সটেনশন লিখবেন [উদাহরণ প্রকল্প অন্তর্ভুক্ত]