-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathENCRYPT.cpp
100 lines (92 loc) · 3.48 KB
/
ENCRYPT.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
Title: Encryption (Encrypt) for Client/Server Communication
Author: Daniel J Chalmers
Date: 27/02/20 - 30/02/20
Part of BSc Computer Science, Module 4007CEM: Activity Led Learning, Coventry University
Project Co-Authors: Daniel Perks, Harrison Duffield, Robert Crabtree
For integration with 'DECRYPT', 'Server' and 'Client' .cpp files
***EXECUTION IN ISOLAION REQUIRES INPUTTED DATA (nothing imported)***
*/
#include <algorithm>
#include <iostream>
#include <vector>
#include <string>
#include <random>
using namespace std;
string encode(string characterParamater, int length, string encodedString, char subsetArray[][9], int rows, int cols)
{
vector<char> characters(characterParamater.begin(), characterParamater.end());
for (int i = 0; i < characters.size(); i++)
{
cout << characters.at(i) << "";
}
for (int i = 0; i < length; ++i)
{
for (int k = 0; k < (cols + 1); ++k)
{
for (int j = 0; j < (rows + 1); ++j)
{
if (characters[i] == subsetArray[j][k])
{
string subset = to_string(j + 1);
string index = to_string(k + 1);
encodedString.append(subset);
encodedString.append(index);
}
}
}
}
return encodedString;
}
void setArguments(string characterParameter, int a, int b, int *length, int *rows, int *cols)
{
*length = characterParameter.size();
*rows = a;
*cols = b;
}
int main()
{
string strInput;
cout << "Enter your string\n>";
getline(cin, strInput);
vector<char> charactersPlaceholder(strInput.begin(), strInput.end());
string encodedString;
random_device randomDevice;
mt19937 pseudoRandom(randomDevice()); // mt19937 type = pseudorandom generator of 32-bit numbers (state size of 19937 bits)
uniform_int_distribution<> randomSubset(3,4); // Define range
uniform_int_distribution<> randomChecksum(10000, 99999);
int checksum = randomChecksum(pseudoRandom);
int alphabetSubset = randomSubset(pseudoRandom);
bool runningValue;
runningValue = true;
encodedString.append(to_string(alphabetSubset));
encodedString.append(to_string(checksum));
string characterArgument(charactersPlaceholder.begin(), charactersPlaceholder.end());
while (runningValue == true)
{
if (alphabetSubset == 3)
{
int length, rows, cols;
setArguments(characterArgument, 8, 9, &length, &rows, &cols);
char subsetArray[8][9] = { {'A','B','C','D','E','F','G','H','I'}, {'J','K','L','M','N','O','P','Q','R'},
{'S','T','U','V','W','X','Y','Z',' '}, { '.',',','?','!','%','-','+','0','1'},
{'2','3','4','5','6','7','8','9','a'}, {'b','c','d','e','f','g','h','i','j'},
{'k','l','m','n','o','p','q','r','s'}, {'t','u','v','w','x','y','z','\''} };
string encoded = encode(characterArgument, length, encodedString, subsetArray, rows, cols);
cout << encoded;
runningValue = false;
}
else if (alphabetSubset == 4)
{
int length, rows, cols;
setArguments(characterArgument, 9, 8, &length, &rows, &cols);
char subsetArray[9][9] = { {'A','B','C','D','E','F','G','H'}, {'I','J','K','L','M','N','O','P'}, {'Q','R','S','T','U','V','W','X'},
{'Y','Z',' ','.',',','?','!','%'}, {'-','+','0','1','2','3','4','5'}, {'6','7','8','9','a','b','c','d'},
{'e','f','g','h','i','j','k','l'}, {'m','n','o','p','q','r','s','t'}, {'u','v','w','x','y','Z','\''} };
string encoded = encode(characterArgument, length, encodedString, subsetArray, rows, cols);
cout << encoded;
runningValue = false;
}
}
}
// Written in Visual Studio 2019