From a82f77cd33275262684a8beda8d3e12c6950d9be Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Wed, 1 Apr 2015 17:01:57 +0200 Subject: First steps with CryptClassCaesar --- src/crypt/cryptclasscaesar.cpp | 36 +++++++++++++++++++++++++++++++++++- src/crypt/cryptclasscaesar.h | 10 ++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/crypt/cryptclasscaesar.cpp b/src/crypt/cryptclasscaesar.cpp index 23914a2..c1094ef 100644 --- a/src/crypt/cryptclasscaesar.cpp +++ b/src/crypt/cryptclasscaesar.cpp @@ -1,8 +1,12 @@ #include "cryptclasscaesar.h" +const int CryptClassCaesar::lowerBound = 0x30; +const int CryptClassCaesar::upperBound = 0x7A; + CryptClassCaesar::CryptClassCaesar() { - + oldKey = -1; + buildMap(); } CryptClassCaesar::~CryptClassCaesar() @@ -13,9 +17,39 @@ CryptClassCaesar::~CryptClassCaesar() void CryptClassCaesar::encrypt() { qDebug("CryptClassCaesar::encrypt"); + buildMap(); + + QByteArray tmp = getClearText(); + + for (int i = 0; i < tmp.size(); i++) + { + tmp[i] = substitutionsMap[tmp[i]]; + } + + setCryptText((unsigned char*) tmp.data(), tmp.size()); + } void CryptClassCaesar::decrypt() { qDebug("CryptClassCaesar::encrypt"); } + +void CryptClassCaesar::buildMap() +{ + if (oldKey == getKey().toInt()) + { + return; + } + + oldKey = getKey().toInt(); + + substitutionsMap.clear(); + + for (int i = 0; i < (upperBound - lowerBound); i++) + { + substitutionsMap.insert((char)(lowerBound + i), + (char)(lowerBound + (i + oldKey) % (upperBound - lowerBound))); + + } +} diff --git a/src/crypt/cryptclasscaesar.h b/src/crypt/cryptclasscaesar.h index 6262d9e..d419232 100644 --- a/src/crypt/cryptclasscaesar.h +++ b/src/crypt/cryptclasscaesar.h @@ -3,6 +3,7 @@ #include "cryptclassbase.h" #include +#include class CryptClassCaesar : public CryptClassBase { @@ -14,6 +15,15 @@ public: public: void encrypt(); void decrypt(); + +private: + void buildMap(); + + int oldKey; + QMap substitutionsMap; + + const static int lowerBound; + const static int upperBound; }; #endif // CRYPTCLASSCAESAR_H -- cgit v1.2.3-70-g09d2