summaryrefslogtreecommitdiffstats
path: root/src/crypt
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-05-05 14:14:46 +0200
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-05-05 14:14:46 +0200
commita2737677508333c18253730b46b6c368e4743eac (patch)
tree7f138914c21784674777a42fd4a1116cf3ed2b01 /src/crypt
parentbe846db403c29c77bfb72633d87a7c72a48562b6 (diff)
downloadIT-Sicherheit-a2737677508333c18253730b46b6c368e4743eac.tar.gz
IT-Sicherheit-a2737677508333c18253730b46b6c368e4743eac.zip
Add RC4 encryption from OpenSSL
Diffstat (limited to 'src/crypt')
-rw-r--r--src/crypt/cryptclassrc4.cpp19
-rw-r--r--src/crypt/cryptclassrc4.h23
-rw-r--r--src/crypt/cryptengine.cpp6
-rw-r--r--src/crypt/cryptengine.h1
-rw-r--r--src/crypt/cryptrc4.cpp19
-rw-r--r--src/crypt/cryptrc4.h19
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