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

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

Vigenere Cipher, अल्फ़ाबेटिक टेक्स्ट को एन्क्रिप्ट करने की एक तरह की पॉलीअल्फ़ाबेटिक प्रतिस्थापन विधि है।

इस विधि में एन्क्रिप्शन और डिक्रिप्शन के लिए Vigenere Cipher Table का उपयोग किया जाता है जिसमें A से Z तक के अक्षर 26 पंक्तियों में लिखे जाते हैं।

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

एन्क्रिप्शन

कुंजी: स्वागत है

संदेश: यहिस्टुटोरियल पॉइंट

यहां हमें दी गई कुंजी को तब तक दोहराकर एक कुंजी प्राप्त करनी है जब तक कि इसकी लंबाई मूल संदेश लंबाई के बराबर न हो जाए।

एन्क्रिप्शन के लिए संदेश का पहला अक्षर और कुंजी यानी टी और डब्ल्यू लें। विगेनियर सिफर टेबल में वर्णमाला लें जहां टी पंक्ति और डब्ल्यू कॉलम मेल खाता है यानी पी।

संदेश पाठ में शेष सभी अक्षरों के लिए यही प्रक्रिया दोहराएं।

अंत में, एन्क्रिप्टेड संदेश टेक्स्ट है -

एन्क्रिप्टेड संदेश: PLTUWEXQXZTWMPOTZKBF.

सिफर पाठ नीचे समीकरण द्वारा उत्पन्न किया जा सकता है।

ईआई =(पाई + की) मॉड 26

यहाँ P सादा पाठ है और K कुंजी है।

डिक्रिप्शन

कुंजी: स्वागत है

एन्क्रिप्टेड संदेश: PLTUWEXQXZTWMPOTZKBF

एन्क्रिप्टेड संदेश की जेनरेट की और पहला अक्षर यानी पी और डब्ल्यू लें। विगेनियर सिफर टेबल का विश्लेषण करें, कॉलम डब्ल्यू में वर्णमाला पी देखें, संबंधित पंक्ति मूल संदेश यानी टी का पहला अक्षर होगा।

एन्क्रिप्टेड संदेश में सभी अक्षरों के लिए इस प्रक्रिया को दोहराएं।

मूल संदेश:thisistutorialspoint

इसे निम्न समीकरण द्वारा बीजीय रूप में दर्शाया जा सकता है।

पाई =(ईआई - की + 26) मॉड 26

विगेनियर सिफर को लागू करने के लिए यहाँ एक C++ प्रोग्राम है।

एल्गोरिदम

Begin
   Function encryption(string t)
   for i = 0, j = 0 to t.length() - 1
      char c = t[i]
      if (c >= 'a' and c <= 'z')
         c = c + 'A' - 'a'
      else if (c < 'A' or c > 'Z')
         continue
      output = output + (c + k[j] ) % 26 + 'A'
      j = (j + 1) % k.length()
   return output
End
Begin
   Function decryption(string t)
   for i = 0, j = 0 to t.length() - 1
      char c = t[i]
      if (c >= 'a' and c <= 'z')
         c = c + 'A' - 'a'
      else if (c < 'A' or c > 'Z')
         continue
      output =output + (c - k[j] + 26) % 26 + 'A'
      j = (j + 1) % k.length()
   return output
End

उदाहरण

#include <iostream>
#include <string>
using namespace std;
class Vig {
   public:
      string k;
   Vig(string k) {
      for (int i = 0; i < k.size(); ++i) {
         if (k[i] >= 'A' && k[i] <= 'Z')
            this->k += k[i];
         else if (k[i] >= 'a' && k[i] <= 'z')
            this->k += k[i] + 'A' - 'a';
      }
   }
   string encryption(string t) {
      string output;
      for (int i = 0, j = 0; i < t.length(); ++i) {
         char c = t[i];
         if (c >= 'a' && c <= 'z')
            c += 'A' - 'a';
         else if (c < 'A' || c > 'Z')
            continue;
         output += (c + k[j] - 2 * 'A') % 26 + 'A'; //added 'A' to bring it in range of ASCII alphabet [ 65-90 | A-Z ]
         j = (j + 1) % k.length();
      }
      return output;
   }
   string decryption(string t) {
      string output;
      for (int i = 0, j = 0; i < t.length(); ++i) {
         char c = t[i];
         if (c >= 'a' && c <= 'z')
            c += 'A' - 'a';
         else if (c < 'A' || c > 'Z')
            continue;
         output += (c - k[j] + 26) % 26 + 'A';//added 'A' to bring it in range of ASCII alphabet [ 65-90 | A-Z ]
         j = (j + 1) % k.length();
      }
      return output;
   }
};
int main() {
   Vig v("WELCOME");
   string ori ="Thisistutorialspoint";
   string encrypt = v.encryption(ori);
   string decrypt = v.decryption(encrypt);
   cout << "Original Message: "<<ori<< endl;
   cout << "Encrypted Message: " << encrypt << endl;
   cout << "Decrypted Message: " << decrypt << endl;
}

आउटपुट

Original Message: Thisistutorialspoint
Encrypted Message: PLTUWEXQXZTWMPOTZKBF
Decrypted Message: THISISTUTORIALSPOINT

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

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

  1. AVL ट्री को लागू करने के लिए C++ प्रोग्राम

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

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

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