lundi 3 février 2020

Substitution cipher:Which one?

I'm a beginner and I have a question(somehow silly and stupid :) )...Today I decided to challenge myself and I came around the challenge that wanted me to create a program that ciphers (or encrypts) the message using the substitution cipher method...I solved the challenge by myself but mine is way different than the solution itself...I just want to know which one is better and why? and also is there anything I missed in my own code?

So here is the code I've written:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string secretMessage {};
    string alphabet {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
    string key {"XZNLWEBGJHQDYVTKFUOMPCIASRxznlwebgjhqdyvtkfuompciasr"};
    cout << "Enter your secret message: ";
    getline(cin, secretMessage);
    //Encryption
    for(size_t i{0}; i<secretMessage.length(); ++i){
        for(size_t j{0}; j<alphabet.length(); ++j){
            if (secretMessage.at(i) == alphabet.at(j)){
                secretMessage.at(i) = key.at(j);
                break;
            }
        }
    }
    cout << "Encrypting The Message..." << endl;
    cout << "Encrypted Message: " << secretMessage << endl;
    //Decryption
    for(size_t i{0}; i<secretMessage.length(); ++i){
        for(size_t j{0}; j<key.length(); ++j){
            if (secretMessage.at(i) == key.at(j)){
                secretMessage.at(i) = alphabet.at(j);
                break;
            }
        }
    }
    cout << "\nDecrypting The Encryption..." << endl;
    cout << "Decrypted: " << secretMessage << endl;
    return 0;
}

And here is the solution:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string secretMessage {};
    string alphabet {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
    string key {"XZNLWEBGJHQDYVTKFUOMPCIASRxznlwebgjhqdyvtkfuompciasr"};
    string encryptedMessage {};
    string decryptedMessage {};
    cout << "Enter your secret message: ";
    getline(cin, secretMessage);
    cout << "\nEncrypting Message..." << endl;
    //Encryption
    for(char c:secretMessage){
        size_t position = alphabet.find(c);
        if (position != string::npos){
            char newChar {key.at(position)};
            encryptedMessage += newChar;
        } else{
            encryptedMessage += c;
        }
    }
    cout << "Encrypted Message: " << encryptedMessage << endl;
    //Decryption
    cout << "\nDecrypting Message..." << endl;
    for(char c:encryptedMessage){
        size_t position = key.find(c);
        if (position != string::npos){
            char newChar {alphabet.at(position)};
            decryptedMessage += newChar;
        } else{
            decryptedMessage += c;
        }
    }
    cout << "Decrypted Message: " << decryptedMessage << endl;
    return 0;
}

Note:I have also included the decryption part too

Aucun commentaire:

Enregistrer un commentaire