কম্পিউটার

সিজার সাইফার বাস্তবায়নের জন্য C++ প্রোগ্রাম


এটি একটি মনো-বর্ণমালার সাইফার যেখানে প্লেইনটেক্সটের প্রতিটি অক্ষর অন্য একটি অক্ষর দ্বারা প্রতিস্থাপিত হয় যাতে সাইফারটেক্সট গঠন করা হয়। এটি প্রতিস্থাপন সাইফার স্কিমের একটি সহজতম রূপ।

এই ক্রিপ্টোসিস্টেমটিকে সাধারণত শিফট সাইফার বলা হয়। ধারণাটি হল প্রতিটি বর্ণমালাকে অন্য বর্ণমালা দ্বারা প্রতিস্থাপন করা যা 0 এবং 25 এর মধ্যে কিছু নির্দিষ্ট সংখ্যা দ্বারা 'স্থানান্তরিত' হয়।

এই ধরনের স্কিমের জন্য, প্রেরক এবং প্রাপক উভয়েই বর্ণমালা পরিবর্তনের জন্য একটি 'গোপন স্থানান্তর নম্বর'-এ সম্মত হন। এই সংখ্যাটি 0 থেকে 25 এর মধ্যে এনক্রিপশনের কী হয়ে ওঠে৷

'সিজার সাইফার' নামটি মাঝে মাঝে শিফট সাইফারকে বর্ণনা করতে ব্যবহৃত হয় যখন 'তিনটির স্থানান্তর' ব্যবহার করা হয়।

প্রক্রিয়া

  • একটি প্লেইন টেক্সট অক্ষর এনক্রিপ্ট করার জন্য, প্রেরক প্লেইন টেক্সট অক্ষরের প্রথম সেটের নীচে স্লাইডিং রুলারকে অবস্থান করে এবং গোপন স্থানান্তরের অবস্থানের সংখ্যা অনুসারে এটিকে বামে স্লাইড করে৷

  • প্লেইনটেক্সট অক্ষরটি তারপর নিচের স্লাইডিং রুলারে সাইফারটেক্সট অক্ষরে এনক্রিপ্ট করা হয়। এই প্রক্রিয়ার ফলাফল তিনটি অবস্থানের একটি সম্মত স্থানান্তরের জন্য নিম্নলিখিত চিত্রে চিত্রিত করা হয়েছে। এই ক্ষেত্রে, প্লেইনটেক্সট 'টিউটোরিয়াল' সাইফারটেক্সট 'wxwruldo'-তে এনক্রিপ্ট করা হয়েছে। এখানে 3 −

    শিফটের জন্য সাইফারটেক্সট বর্ণমালা রয়েছে

সিজার সাইফার বাস্তবায়নের জন্য C++ প্রোগ্রাম

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

  • তারপর সে নিচের স্লাইডিং রুলারের প্লেইনটেক্সট অক্ষর দ্বারা সিফারটেক্সট অক্ষর প্রতিস্থাপন করে। তাই সিফারটেক্সট 'wxwruldo' কে 'টিউটোরিয়াল'-এ ডিক্রিপ্ট করা হয়েছে। 3-এর শিফটের সাথে এনকোড করা একটি বার্তা ডিক্রিপ্ট করতে, নীচে দেখানো হিসাবে '-3'-এর একটি শিফট ব্যবহার করে প্লেইনটেক্সট বর্ণমালা তৈরি করুন -

সিজার সাইফার বাস্তবায়নের জন্য C++ প্রোগ্রাম

এখানে C++ এ উপরের প্রক্রিয়ার বাস্তবায়ন।

পদক্ষেপ এবং সিউডোকোড

ইনপুট হিসাবে বার্তা এবং কী নিন -

এনক্রিপশনের জন্য

  • ইনপুট: টিউটোরিয়াল।
  • আউটপুট: wxwruldo

ডিক্রিপশনের জন্য

  • ইনপুট: wxwruldo
  • আউটপুট: টিউটোরিয়াল

এনক্রিপশনের জন্য

Begin
   For i = 0 to msg[i] != '\0'
      ch = msg[i]
   //encrypt for lowercase letter
      If (ch >= 'a' and ch <= 'z')
         ch = ch + key
         if (ch > 'z')
            ch = ch - 'z' + 'a' - 1
         done
         msg[i] = ch
   //encrypt for uppercase letter
      else if (ch >= 'A' and ch <= 'Z')
         ch = ch + key
         if (ch > 'Z')
            ch = ch - 'Z' + 'A' - 1
         done
         msg[i] = ch
      done
   done
   Print Encrypted message
End

ডিক্রিপশনের জন্য

Begin
   For i = 0 to msg[i] != '\0'
      ch = msg[i]
   //decrypt for lowercase letter
      if(ch >= 'a' and ch <= 'z')
         ch = ch - key
         if (ch < 'a')
            ch = ch +'z' - 'a' + 1
      done
      msg[i] = ch
   //decrypt for uppercase letter
      else if (ch >= 'A' and ch <= 'Z')
         ch = ch + key
         if (ch < 'A')
            ch = ch + 'Z' - 'A' + 1
         done
         msg[i] = ch
      done
   done
   Print decrypted message
End

উদাহরণ

#include<iostream>
#include<string.h>
using namespace std;
int main() {
   cout<<"Enter the message:\n";
   char msg[100];
   cin.getline(msg,100); //take the message as input
   int i, j, length,choice,key;
   cout << "Enter key: ";
   cin >> key; //take the key as input
   length = strlen(msg);
   cout<<"Enter your choice \n1. Encryption \n2. Decryption \n";
   cin>>choice;
   if (choice==1) //for encryption{
      char ch;
      for(int i = 0; msg[i] != '\0'; ++i) {
         ch = msg[i];
         //encrypt for lowercase letter
         If (ch >= 'a' && ch <= 'z'){
            ch = ch + key;
            if (ch > 'z') {
               ch = ch - 'z' + 'a' - 1;
            }  
            msg[i] = ch;
         }
         //encrypt for uppercase letter
         else if (ch >= 'A' && ch <= 'Z'){
            ch = ch + key;
            if (ch > 'Z'){
               ch = ch - 'Z' + 'A' - 1;
            }
            msg[i] = ch;
         }
      }
      printf("Encrypted message: %s", msg);
   }
   else if (choice == 2) { //for decryption
      char ch;
      for(int i = 0; msg[i] != '\0'; ++i) {
         ch = msg[i];
         //decrypt for lowercase letter
         if(ch >= 'a' && ch <= 'z') {
            ch = ch - key;
            if(ch < 'a'){
               ch = ch + 'z' - 'a' + 1;
            }
            msg[i] = ch;
         }
         //decrypt for uppercase letter
         else if(ch >= 'A' && ch <= 'Z') {
            ch = ch - key;
            if(ch < 'A') {
               ch = ch + 'Z' - 'A' + 1;
            }
            msg[i] = ch;
         }
      }
      cout << "Decrypted message: " << msg;
   }
}

আউটপুট

For encryption:
Enter the message:
tutorial
Enter key: 3
Enter your choice
1. Encryption
2. Decryption
1
Encrypted message: wxwruldo

For decryption:
Enter the message:
wxwruldo
Enter key: 3
Enter your choice
1. Encryption
2. Decryption
2
Decrypted message: tutorial

  1. ভিজেনার সাইফার বাস্তবায়নের জন্য C++ প্রোগ্রাম

  2. AVL ট্রি বাস্তবায়নের জন্য C++ প্রোগ্রাম

  3. STL-এ সেট_সিমেট্রিক_ডিফারেন্স বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. অ্যাডজাসেন্সি ম্যাট্রিক্স বাস্তবায়নের জন্য C++ প্রোগ্রাম