From 4f60b9b97f64fca56b022f2a90aa8c0c99f8478c Mon Sep 17 00:00:00 2001 From: Abhishek Raj Date: Wed, 23 Oct 2024 14:26:45 +0530 Subject: [PATCH] Added C++ Implementation --- cpp/a.out | Bin 0 -> 18656 bytes cpp/vigenere.cpp | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100755 cpp/a.out create mode 100644 cpp/vigenere.cpp diff --git a/cpp/a.out b/cpp/a.out new file mode 100755 index 0000000000000000000000000000000000000000..f43dbfd9361f43a880fd40a7ef84f0dc518647f1 GIT binary patch literal 18656 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 +#include +#include +using namespace std; + +class VigenereCipher { +public: + // Encryption function to encrypt the plaintext using the key + string encrypt(const string &plaintext, const string &key) { + string ciphertext; + int keyIndex = 0; + int keyLength = key.length(); + + for (char ch : plaintext) { + if (isalpha(ch)) { + char base = isupper(ch) ? 'A' : 'a'; + char keyChar = toupper(key[keyIndex % keyLength]) - 'A'; + char encryptedChar = (ch - base + keyChar) % 26 + base; + ciphertext += encryptedChar; + keyIndex++; + } else { + ciphertext += ch; // Non-albhabetic character will be added as is it + } + } + return ciphertext; + } + + // Decryption function the ciphertext using the key + string decrypt(const string &ciphertext, const string &key) { + string plaintext; + int keyIndex = 0; + int keyLength = key.length(); + + for (char ch : ciphertext) { + if (isalpha(ch)) { + char base = isupper(ch) ? 'A' : 'a'; + char keyChar = toupper(key[keyIndex % keyLength]) - 'A'; + char decryptedChar = (ch - base - keyChar + 26) % 26 + base; + plaintext += decryptedChar; + keyIndex++; + } else { + plaintext += ch; // Non-alphabetic character will be added as it is. + } + } + return plaintext; + } +}; + +int main() { + VigenereCipher vc; + string plaintext, key; + + cout << "Enter plaintext: "; + getline(cin, plaintext); + cout << "Enter key: "; + getline(cin, key); + + string encrypted = vc.encrypt(plaintext, key); + cout << "Encrypted text: " << encrypted << endl; + + string decrypted = vc.decrypt(encrypted, key); + cout << "Decrypted text: " << decrypted << endl; + + return 0; +}