usingMaths.com
Demonstrating and showing pupils and students one application of Mathematics.



Versions on Key Encryption Algorithm in C++




loading...
Algorithm by: Educator usingMaths

Our Single Key Encryption code in C++.


Single Key Encryption Class Header File:

#pragma once

#include "BigInteger.h"
#include <string>
#include <vector>

using namespace std;

class SoleKeyEncryption
{
public:
    SoleKeyEncryption();
    virtual ~SoleKeyEncryption();

    vector<string> encodeWord(vector<char>, vector<char>);
    string decodeWord(vector<string>, vector<char>);
};


Single Key Encryption Class File:

#include "stdafx.h"
#include "SoleKeyEncryption.h"


SoleKeyEncryption::SoleKeyEncryption()
{
}

vector<stringSoleKeyEncryption::encodeWord(vector<charmsgvector<charkey) {
    // encoding eqn { Tn = 3^n-1(2t1 + 1) - 1 } - please use your own eqn
    //                        2
    vector<string> encryption = {};
    int n, t1;
    string h, Tn;
    stringstream x;
    for (size_t i = 0; i < msg.size(); i++) {
        // get unicode of this character as t1
        t1 = (intmsg[i];
        // get next key digit as n
        h = "";
        h += key[i % (key.size() - 1)];
        x << hex << h;
        x >> n;
        x.clear();
        // use recurrence series equation to encrypt & save in base 16
        Tn = BigInteger::division(BigInteger::subtraction(BigInteger::multiplication(
            BigInteger::exponentialPower("3", n - 1), to_string(2 * t1 + 1)), "1"), "2");
        encryption.push_back(BigInteger::decToHex(Tn));
    }
    
    return encryption;
}

string SoleKeyEncryption::decodeWord(vector<stringcodevector<charkey) {
    // decoding eqn { t1 = 3^1-n(2Tn + 1) - 1 }
    //                        2
    string decryption = "", h, t1, Tn;
    int n;
    stringstream x;
    for (size_t i = 0; i < code.size(); i++) {
        Tn = BigInteger::hexToDec(code[i]);
        // get next key digit as n
        h = "";
        h += key[i % (key.size() - 1)];
        x << hex << h;
        x >> n;
        x.clear();
        // use recurrence series equation to decrypt
        t1 = BigInteger::division(BigInteger::subtraction(BigInteger::division(
            to_string(2 * stoi(Tn) + 1), BigInteger::exponentialPower("3", n - 1)), "1"), "2");
        decryption += (char)stoi(t1);
    }

    return decryption;
}



SoleKeyEncryption::~SoleKeyEncryption()
{
}


Main Class:

#include "stdafx.h"
#include "SoleKeyEncryption.h"

#include <iostream>

using namespace std;

int main()
{
    vector<char> message = { 'm''e''r''r''y'' ''x''m''a''s' };
    vector<char> key = { 'A''5''F''B''1''7''C''4''D''8' }; // you might want to avoid zeroes

    SoleKeyEncryption go_secure;
    vector<string> encrypted = go_secure.encodeWord(message, key);
    string disp = "";
    for (string s : encrypted) {
        disp += s + "; ";
    }
    string msg = "";
    for (char c : message) {
        msg += c;
    }
    cout << "Message is '" << msg << "';\nEncrypted version is " << disp << endl;

    string decrypted = go_secure.decodeWord(encrypted, key);
    cout << "\n\nDecrypted version is '" << decrypted << "'.";

    return 0;
}


Try it out!

Ownership (1) Simplicity (0.0) Elegance (0.0)
loading...
colormap #003366 #336699 #3366CC #003399 #000099 #0000CC #000066 #006666 #006699 #0099CC #0066CC #0033CC #0000FF #3333FF #333399 #669999 #009999 #33CCCC #00CCFF #0099FF #0066FF #3366FF #3333CC #666699 #339966 #00CC99 #00FFCC #00FFFF #33CCFF #3399FF #6699FF #6666FF #6600FF #6600CC #339933 #00CC66 #00FF99 #66FFCC #66FFFF #66CCFF #99CCFF #9999FF #9966FF #9933FF #9900FF #006600 #00CC00 #00FF00 #66FF99 #99FFCC #CCFFFF #CCCCFF #CC99FF #CC66FF #CC33FF #CC00FF #9900CC #003300 #009933 #33CC33 #66FF66 #99FF99 #CCFFCC #FFFFFF #FFCCFF #FF99FF #FF66FF #FF00FF #CC00CC #660066 #336600 #009900 #66FF33 #99FF66 #CCFF99 #FFFFCC #FFCCCC #FF99CC #FF66CC #FF33CC #CC0099 #993399 #333300 #669900 #99FF33 #CCFF66 #FFFF99 #FFCC99 #FF9999 #FF6699 #FF3399 #CC3399 #990099 #666633 #99CC00 #CCFF33 #FFFF66 #FFCC66 #FF9966 #FF6666 #FF0066 #CC6699 #993366 #999966 #CCCC00 #FFFF00 #FFCC00 #FF9933 #FF6600 #FF5050 #CC0066 #660033 #996633 #CC9900 #FF9900 #CC6600 #FF3300 #FF0000 #CC0000 #990033 #663300 #996600 #CC3300 #993300 #990000 #800000 #993333
Drop Your Version!
Login Please!

colormap #003366 #336699 #3366CC #003399 #000099 #0000CC #000066 #006666 #006699 #0099CC #0066CC #0033CC #0000FF #3333FF #333399 #669999 #009999 #33CCCC #00CCFF #0099FF #0066FF #3366FF #3333CC #666699 #339966 #00CC99 #00FFCC #00FFFF #33CCFF #3399FF #6699FF #6666FF #6600FF #6600CC #339933 #00CC66 #00FF99 #66FFCC #66FFFF #66CCFF #99CCFF #9999FF #9966FF #9933FF #9900FF #006600 #00CC00 #00FF00 #66FF99 #99FFCC #CCFFFF #CCCCFF #CC99FF #CC66FF #CC33FF #CC00FF #9900CC #003300 #009933 #33CC33 #66FF66 #99FF99 #CCFFCC #FFFFFF #FFCCFF #FF99FF #FF66FF #FF00FF #CC00CC #660066 #336600 #009900 #66FF33 #99FF66 #CCFF99 #FFFFCC #FFCCCC #FF99CC #FF66CC #FF33CC #CC0099 #993399 #333300 #669900 #99FF33 #CCFF66 #FFFF99 #FFCC99 #FF9999 #FF6699 #FF3399 #CC3399 #990099 #666633 #99CC00 #CCFF33 #FFFF66 #FFCC66 #FF9966 #FF6666 #FF0066 #CC6699 #993366 #999966 #CCCC00 #FFFF00 #FFCC00 #FF9933 #FF6600 #FF5050 #CC0066 #660033 #996633 #CC9900 #FF9900 #CC6600 #FF3300 #FF0000 #CC0000 #990033 #663300 #996600 #CC3300 #993300 #990000 #800000 #993333
Remark!
Login Please!

colormap #003366 #336699 #3366CC #003399 #000099 #0000CC #000066 #006666 #006699 #0099CC #0066CC #0033CC #0000FF #3333FF #333399 #669999 #009999 #33CCCC #00CCFF #0099FF #0066FF #3366FF #3333CC #666699 #339966 #00CC99 #00FFCC #00FFFF #33CCFF #3399FF #6699FF #6666FF #6600FF #6600CC #339933 #00CC66 #00FF99 #66FFCC #66FFFF #66CCFF #99CCFF #9999FF #9966FF #9933FF #9900FF #006600 #00CC00 #00FF00 #66FF99 #99FFCC #CCFFFF #CCCCFF #CC99FF #CC66FF #CC33FF #CC00FF #9900CC #003300 #009933 #33CC33 #66FF66 #99FF99 #CCFFCC #FFFFFF #FFCCFF #FF99FF #FF66FF #FF00FF #CC00CC #660066 #336600 #009900 #66FF33 #99FF66 #CCFF99 #FFFFCC #FFCCCC #FF99CC #FF66CC #FF33CC #CC0099 #993399 #333300 #669900 #99FF33 #CCFF66 #FFFF99 #FFCC99 #FF9999 #FF6699 #FF3399 #CC3399 #990099 #666633 #99CC00 #CCFF33 #FFFF66 #FFCC66 #FF9966 #FF6666 #FF0066 #CC6699 #993366 #999966 #CCCC00 #FFFF00 #FFCC00 #FF9933 #FF6600 #FF5050 #CC0066 #660033 #996633 #CC9900 #FF9900 #CC6600 #FF3300 #FF0000 #CC0000 #990033 #663300 #996600 #CC3300 #993300 #990000 #800000 #993333
Edit Your Algorithm!
Login Please!

colormap #003366 #336699 #3366CC #003399 #000099 #0000CC #000066 #006666 #006699 #0099CC #0066CC #0033CC #0000FF #3333FF #333399 #669999 #009999 #33CCCC #00CCFF #0099FF #0066FF #3366FF #3333CC #666699 #339966 #00CC99 #00FFCC #00FFFF #33CCFF #3399FF #6699FF #6666FF #6600FF #6600CC #339933 #00CC66 #00FF99 #66FFCC #66FFFF #66CCFF #99CCFF #9999FF #9966FF #9933FF #9900FF #006600 #00CC00 #00FF00 #66FF99 #99FFCC #CCFFFF #CCCCFF #CC99FF #CC66FF #CC33FF #CC00FF #9900CC #003300 #009933 #33CC33 #66FF66 #99FF99 #CCFFCC #FFFFFF #FFCCFF #FF99FF #FF66FF #FF00FF #CC00CC #660066 #336600 #009900 #66FF33 #99FF66 #CCFF99 #FFFFCC #FFCCCC #FF99CC #FF66CC #FF33CC #CC0099 #993399 #333300 #669900 #99FF33 #CCFF66 #FFFF99 #FFCC99 #FF9999 #FF6699 #FF3399 #CC3399 #990099 #666633 #99CC00 #CCFF33 #FFFF66 #FFCC66 #FF9966 #FF6666 #FF0066 #CC6699 #993366 #999966 #CCCC00 #FFFF00 #FFCC00 #FF9933 #FF6600 #FF5050 #CC0066 #660033 #996633 #CC9900 #FF9900 #CC6600 #FF3300 #FF0000 #CC0000 #990033 #663300 #996600 #CC3300 #993300 #990000 #800000 #993333
Edit Your Remark!
Login Please!

Delete Post >

Delete Comment >

Please wait...