diff --git a/.cproject b/.cproject
new file mode 100644
index 0000000..3068143
--- /dev/null
+++ b/.cproject
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4144fa1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,38 @@
+# Prerequisites
+*.d
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+*.smod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+
+# XCode project
+*.xcodeproj
+xcuserdata/
+EnigmaMachine.xcodeproj
+.DS_Store
diff --git a/.project b/.project
new file mode 100644
index 0000000..002dab6
--- /dev/null
+++ b/.project
@@ -0,0 +1,27 @@
+
+
+ Enigma-Simulator
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.core.ccnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
new file mode 100644
index 0000000..c4cae33
--- /dev/null
+++ b/.settings/language.settings.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/.settings/org.eclipse.cdt.managedbuilder.core.prefs
new file mode 100644
index 0000000..55778d9
--- /dev/null
+++ b/.settings/org.eclipse.cdt.managedbuilder.core.prefs
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/CPATH/delimiter=;
+environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/CPATH/operation=remove
+environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/CPLUS_INCLUDE_PATH/delimiter=;
+environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/CPLUS_INCLUDE_PATH/operation=remove
+environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/C_INCLUDE_PATH/delimiter=;
+environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/C_INCLUDE_PATH/operation=remove
+environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/append=true
+environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/appendContributed=true
+environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/LIBRARY_PATH/delimiter=;
+environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/LIBRARY_PATH/operation=remove
+environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/append=true
+environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827/appendContributed=true
diff --git a/EnigmaMachine/EnigmaMachine/EnigmaDecrypter.cpp b/EnigmaMachine/EnigmaMachine/EnigmaDecrypter.cpp
new file mode 100644
index 0000000..1e86b0e
--- /dev/null
+++ b/EnigmaMachine/EnigmaMachine/EnigmaDecrypter.cpp
@@ -0,0 +1,66 @@
+//
+// EnigmaDecrypter.cpp
+// EnigmaMachine
+//
+// Created by Rajat Agarwal on 12/07/20.
+// Copyright © 2020 Rajat Agarwal. All rights reserved.
+//
+
+#include "EnigmaDecrypter.hpp"
+#include
+#include "Utils/config.h"
+#include
+
+EnigmaDecrypter::EnigmaDecrypter() { }
+
+
+/*bool EnigmaDecrypter::offsetIterator(){
+ for(int i = 0; i<26; i++){
+ for(int j = 0; j<26; j++){
+ for(int k = 0; k<26; k++){
+ int arr[]={k, j, i};
+ _enigmaMachine.setRotorOffset(arr);
+ std::string decoded = _enigmaMachine.encode(_crib);
+ if(decoded == _plaintxt){
+ _config.offsets[0]=k;
+ _config.offsets[1]=j;
+ _config.offsets[2]=i;
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+*/
+
+bool EnigmaDecrypter::offsetIterator(){
+ for(int i = 0; i<26; i++){
+ for(int j = 0; j<26; j++){
+ for(int k = 0; k<26; k++){
+ int arr[]={k, j, i};
+ _enigmaMachine.setRotorOffset(arr);
+ std::string decoded = _enigmaMachine.encode(_crib);
+ if(decoded == _plaintxt){
+ _config.offsets[0]=k;
+ _config.offsets[1]=j;
+ _config.offsets[2]=i;
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+
+bool EnigmaDecrypter::run(std::string crib, std::string plaintxt){
+ crib = custom_utils::removeSpecial(crib);
+ _crib = custom_utils::toUppercase(crib);
+ plaintxt = custom_utils::removeSpecial(plaintxt);
+ _plaintxt = custom_utils::toUppercase(plaintxt);
+ return offsetIterator();
+}
+
+RotorConfig EnigmaDecrypter::getRotorConfig(){
+ return _config;
+}
diff --git a/EnigmaMachine/EnigmaMachine/EnigmaDecrypter.hpp b/EnigmaMachine/EnigmaMachine/EnigmaDecrypter.hpp
new file mode 100644
index 0000000..ba51923
--- /dev/null
+++ b/EnigmaMachine/EnigmaMachine/EnigmaDecrypter.hpp
@@ -0,0 +1,31 @@
+//
+// EnigmaDecrypter.hpp
+// EnigmaMachine
+//
+// Created by Ayush Agrawal on 11/07/20.
+// Copyright © 2020 Ayush Agrawal. All rights reserved.
+//
+
+#pragma once
+
+#include "EnigmaMachine.hpp"
+#include "RotorConfig.hpp"
+
+class EnigmaDecrypter {
+private:
+ EnigmaMachine _enigmaMachine;
+ RotorConfig _config;
+ bool _keyFound;
+ std::string _crib;
+ std::string _plaintxt;
+ bool offsetIterator();
+
+
+public:
+ EnigmaDecrypter();
+ void rotorTypeIterator();
+ void reflectorIterator();
+ RotorConfig getRotorConfig();
+ std::string decrypt();
+ bool run(std::string crib, std::string plaintxt);
+};
diff --git a/EnigmaMachine/EnigmaMachine/EnigmaMachine.cpp b/EnigmaMachine/EnigmaMachine/EnigmaMachine.cpp
new file mode 100644
index 0000000..1d89ac6
--- /dev/null
+++ b/EnigmaMachine/EnigmaMachine/EnigmaMachine.cpp
@@ -0,0 +1,35 @@
+//
+// Enigma.cpp
+// EnigmaMachine
+//
+// Created by Ayush Agrawal on 10/07/20.
+// Copyright © 2020 Ayush Agrawal. All rights reserved.
+//
+
+#include "EnigmaMachine.hpp"
+#include "Utils/utils.hpp"
+#include "RotorConfig.hpp"
+EnigmaMachine::EnigmaMachine(RotorConfig r_config): _rotorSet(r_config) { }
+
+EnigmaMachine::EnigmaMachine() { }
+
+std::string EnigmaMachine::encode(std::string inputStr){
+ std::string inpCopy = custom_utils::removeSpecial(inputStr);
+
+ inpCopy = custom_utils::toUppercase(inpCopy);
+
+ std::string outputStr;
+ for (int i = 0; i < inpCopy.size(); i++){
+ char charOut = _rotorSet.parseValue( inpCopy[i] );
+ outputStr.push_back(charOut);
+ }
+
+ return outputStr;
+}
+
+
+void EnigmaMachine::setRotorOffset(int offsets[NO_OF_ROTORS]){
+ for(int i = 0; i
+#include