-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsimplesubstitutioner.cpp
More file actions
61 lines (47 loc) · 1.44 KB
/
simplesubstitutioner.cpp
File metadata and controls
61 lines (47 loc) · 1.44 KB
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
#include "simplesubstitutioner.h"
#include <QFile>
#include <QSaveFile>
#include <QTextStream>
#include <QDebug>
SimpleSubstitutioner::SimpleSubstitutioner()
: CryptoAlgorithm()
{
}
void SimpleSubstitutioner::runAlgo(const QString &inF, const QString &outF, bool encrypt)
{
qDebug() << "Simple substitution for" << inF << "to" << outF;
QFile inFile(inF);
QSaveFile outFile(outF);
if (inFile.open(QIODevice::ReadOnly | QIODevice::Text)
&& outFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream inReader(&inFile);
QTextStream outReader(&outFile);
while (!inReader.atEnd()) {
QString input;
inReader >> input;
input = input.remove(QRegExp("[^A-Za-z]")).toLower();
for (int i = 0; i < input.length(); i++) {
const char inLetter = input.at(i).toLatin1();
const char outLetter = encrypt ? this->keyMapping[inLetter] : this->keyMapping.key(inLetter);
outReader << outLetter;
}
}
inFile.close();
outFile.commit();
}
}
QString SimpleSubstitutioner::returnKey()
{
QString key;
foreach (char c, this->keyMapping) {
key += c;
}
return key;
}
void SimpleSubstitutioner::setKey(QString key)
{
char letterA = 'a';
for (int i = 0; i < key.length(); i++) {
this->keyMapping.insert((char)(letterA + i), key.at(i).toLatin1());
}
}