Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ प्रोग्राम सीजर साइफर को लागू करने के लिए

यह एक मोनो-अल्फाबेटिक सिफर है जिसमें प्लेनटेक्स्ट के प्रत्येक अक्षर को सिफरटेक्स्ट बनाने के लिए दूसरे अक्षर द्वारा प्रतिस्थापित किया जाता है। यह प्रतिस्थापन सिफर योजना का सबसे सरल रूप है।

इस क्रिप्टोसिस्टम को आमतौर पर शिफ्ट सिफर के रूप में जाना जाता है। अवधारणा प्रत्येक वर्णमाला को दूसरे वर्णमाला से प्रतिस्थापित करने की है जो 0 और 25 के बीच किसी निश्चित संख्या से 'स्थानांतरित' हो जाती है।

इस प्रकार की योजना के लिए, प्रेषक और प्राप्तकर्ता दोनों वर्णमाला को स्थानांतरित करने के लिए एक 'गुप्त शिफ्ट संख्या' पर सहमत होते हैं। यह संख्या जो 0 से 25 के बीच होती है, एन्क्रिप्शन की कुंजी बन जाती है।

'सीज़र सिफर' नाम का प्रयोग कभी-कभी शिफ्ट सिफर का वर्णन करने के लिए किया जाता है जब 'तीन की पाली' का उपयोग किया जाता है।

प्रक्रिया

  • एक प्लेनटेक्स्ट अक्षर को एन्क्रिप्ट करने के लिए, प्रेषक स्लाइडिंग रूलर को प्लेनटेक्स्ट अक्षरों के पहले सेट के नीचे रखता है और गुप्त शिफ्ट की स्थिति की संख्या के अनुसार इसे LEFT पर स्लाइड करता है।

  • इसके बाद प्लेनटेक्स्ट अक्षर को नीचे स्लाइडिंग रूलर पर सिफरटेक्स्ट अक्षर में एन्क्रिप्ट किया जाता है। इस प्रक्रिया के परिणाम को तीन पदों के एक सहमत बदलाव के लिए निम्नलिखित उदाहरण में दर्शाया गया है। इस मामले में, प्लेनटेक्स्ट 'ट्यूटोरियल' को सिफरटेक्स्ट 'wxwruldo' में एन्क्रिप्ट किया गया है। यहाँ 3 की शिफ्ट के लिए सिफरटेक्स्ट वर्णमाला है -

सी ++ प्रोग्राम सीजर साइफर को लागू करने के लिए

  • सिफरटेक्स्ट प्राप्त करने पर, रिसीवर जो गुप्त शिफ्ट को भी जानता है, अपने स्लाइडिंग रूलर को सिफरटेक्स्ट वर्णमाला के नीचे रखता है और इस मामले में सहमत शिफ्ट नंबर, 3 द्वारा इसे दाईं ओर स्लाइड करता है।

  • उसके बाद वह नीचे की ओर खिसकने वाले रूलर पर सिफरटेक्स्ट अक्षर को प्लेनटेक्स्ट अक्षर से बदल देता है। इसलिए सिफरटेक्स्ट 'wxwruldo' को 'ट्यूटोरियल' में डिक्रिप्ट किया गया है। 3 की शिफ्ट के साथ एन्कोड किए गए संदेश को डिक्रिप्ट करने के लिए, नीचे दिखाए गए अनुसार '-3' की शिफ्ट का उपयोग करके सादा पाठ वर्णमाला उत्पन्न करें -

सी ++ प्रोग्राम सीजर साइफर को लागू करने के लिए

यहाँ 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. AVL ट्री को लागू करने के लिए C++ प्रोग्राम

    AVL ट्री एक सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री है जहां सभी नोड्स के लिए बाएं और दाएं सबट्री की ऊंचाई के बीच का अंतर एक से अधिक नहीं हो सकता है। ट्री रोटेशन एक ऐसा ऑपरेशन है जो AVL ट्री पर तत्वों के क्रम में हस्तक्षेप किए बिना संरचना को बदलता है। यह पेड़ में एक नोड को ऊपर और एक नोड को नीचे ले जाता है।

  1. STL में Set_Symmetric_difference को लागू करने के लिए C++ प्रोग्राम

    यह सेट_सिमेट्रिक_डिफरेंस को लागू करने के लिए एक सी ++ प्रोग्राम है। दो सेटों का सममित अंतर उन तत्वों द्वारा निर्मित होता है जो एक सेट में मौजूद होते हैं, लेकिन दूसरे में नहीं। सामान्य सेट ऑपरेशन हैं - संघ सेट करें चौराहे सेट करें सममित सेट अंतर या अनन्य-या अंतर या घटाव सेट करें एल्गोरिदम Begin

  1. सी ++ प्रोग्राम एडजेंसी मैट्रिक्स को लागू करने के लिए

    एक ग्राफ का आसन्न मैट्रिक्स आकार V x V का एक वर्ग मैट्रिक्स है। V ग्राफ G के शीर्षों की संख्या है। इस मैट्रिक्स में प्रत्येक पक्ष में V कोने चिह्नित हैं। यदि ग्राफ़ में i से j कोने तक कुछ किनारे हैं, तो ith पर आसन्न मैट्रिक्स में पंक्ति और जम्मूवें कॉलम में यह 1 (या भारित ग्राफ़ के लिए कुछ गैर-शून्