diff options
Diffstat (limited to 'src/crypt')
| -rw-r--r-- | src/crypt/cryptclassrc4.cpp | 19 | ||||
| -rw-r--r-- | src/crypt/cryptclassrc4.h | 23 | ||||
| -rw-r--r-- | src/crypt/cryptengine.cpp | 6 | ||||
| -rw-r--r-- | src/crypt/cryptengine.h | 1 | ||||
| -rw-r--r-- | src/crypt/cryptrc4.cpp | 19 | ||||
| -rw-r--r-- | src/crypt/cryptrc4.h | 19 |
6 files changed, 87 insertions, 0 deletions
diff --git a/src/crypt/cryptclassrc4.cpp b/src/crypt/cryptclassrc4.cpp new file mode 100644 index 0000000..c1ab511 --- /dev/null +++ b/src/crypt/cryptclassrc4.cpp @@ -0,0 +1,19 @@ +#include "cryptclassrc4.h" + +CryptClassRc4::CryptClassRc4() +{ +} + +void CryptClassRc4::encrypt() +{ + qDebug() << "Encrypt RC4"; + cryptClass.rc4SetKey(m_key); + m_cryptText = cryptClass.rc4Run(m_clearText); +} + +void CryptClassRc4::decrypt() +{ + qDebug() << "Decrypt RC4"; + cryptClass.rc4SetKey(m_key); + m_clearText = cryptClass.rc4Run(m_cryptText); +} diff --git a/src/crypt/cryptclassrc4.h b/src/crypt/cryptclassrc4.h new file mode 100644 index 0000000..edb1bbc --- /dev/null +++ b/src/crypt/cryptclassrc4.h @@ -0,0 +1,23 @@ +#ifndef CRYPTCLASSRC4_H +#define CRYPTCLASSRC4_H + +#include "cryptclassbase.h" +#include <QDebug> +#include "cryptrc4.h" + + +class CryptClassRc4 : public CryptClassBase +{ +public: + CryptClassRc4(); + + // CryptClassBase interface +public: + void encrypt(); + void decrypt(); + +private: + CryptRc4 cryptClass; +}; + +#endif // CRYPTCLASSRC4_H diff --git a/src/crypt/cryptengine.cpp b/src/crypt/cryptengine.cpp index 2a943d5..3e620a6 100644 --- a/src/crypt/cryptengine.cpp +++ b/src/crypt/cryptengine.cpp @@ -100,6 +100,12 @@ void CryptEngine::oncipherSelected_triggered(int cipher) m_cryptClass = new CryptClassCaesar; qDebug("CryptEngine::oncipherSelected_triggered - Caesar"); } + else if( algorithm == "RC4" ) + { + delete m_cryptClass; + m_cryptClass = new CryptClassRc4; + qDebug("CryptEngine::oncipherSelected_triggered - RC4"); + } else if( algorithm == "Cube" ) { // delete m_cryptClass; diff --git a/src/crypt/cryptengine.h b/src/crypt/cryptengine.h index 2574fb3..df91599 100644 --- a/src/crypt/cryptengine.h +++ b/src/crypt/cryptengine.h @@ -7,6 +7,7 @@ #include "cryptclassbase.h" #include "cryptclassnullcipher.h" #include "cryptclasscaesar.h" +#include "cryptclassrc4.h" //#include "cryptclasscube.h" //#include "cryptclassaes.h" //#include "cryptclassrsa.h" diff --git a/src/crypt/cryptrc4.cpp b/src/crypt/cryptrc4.cpp new file mode 100644 index 0000000..701525d --- /dev/null +++ b/src/crypt/cryptrc4.cpp @@ -0,0 +1,19 @@ +#include "cryptrc4.h" + +CryptRc4::CryptRc4() +{ + +} + +void CryptRc4::rc4SetKey(QByteArray key) +{ + RC4_set_key(&m_rc4Key, key.length(), (const unsigned char *) key.data()); +} + +QByteArray CryptRc4::rc4Run(QByteArray clear) +{ + QByteArray crypt(clear); + RC4(&m_rc4Key, clear.length(), (const unsigned char *) clear.data(), (unsigned char *) crypt.data()); + return crypt; +} + diff --git a/src/crypt/cryptrc4.h b/src/crypt/cryptrc4.h new file mode 100644 index 0000000..12e7c65 --- /dev/null +++ b/src/crypt/cryptrc4.h @@ -0,0 +1,19 @@ +#ifndef CRYPTRC4_H +#define CRYPTRC4_H + +#include <openssl/rc4.h> +#include <QByteArray> +#include <QDebug> + +class CryptRc4 +{ +public: + CryptRc4(); + + void rc4SetKey(QByteArray key); + QByteArray rc4Run(QByteArray clear); +private: + RC4_KEY m_rc4Key; +}; + +#endif // CRYPTRC4_H |
