diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-05-05 14:14:46 +0200 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-05-05 14:14:46 +0200 |
| commit | a2737677508333c18253730b46b6c368e4743eac (patch) | |
| tree | 7f138914c21784674777a42fd4a1116cf3ed2b01 /src | |
| parent | be846db403c29c77bfb72633d87a7c72a48562b6 (diff) | |
| download | IT-Sicherheit-a2737677508333c18253730b46b6c368e4743eac.tar.gz IT-Sicherheit-a2737677508333c18253730b46b6c368e4743eac.zip | |
Add RC4 encryption from OpenSSL
Diffstat (limited to 'src')
| -rw-r--r-- | src/cipherssingleton.cpp | 1 | ||||
| -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 |
7 files changed, 88 insertions, 0 deletions
diff --git a/src/cipherssingleton.cpp b/src/cipherssingleton.cpp index 89c66e8..1bdf98f 100644 --- a/src/cipherssingleton.cpp +++ b/src/cipherssingleton.cpp @@ -11,6 +11,7 @@ CiphersSingleton::CiphersSingleton() //Enter QStrings as Descriptions for symmetric Ciphers m_symmetricCipherDescriptions.append( QString("NullCipher") ); m_symmetricCipherDescriptions.append( QString("Caesar") ); + m_symmetricCipherDescriptions.append( QString("RC4") ); m_symmetricCipherDescriptions.append( QString("Cube") ); m_symmetricCipherDescriptions.append( QString("AES") ); 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 |
