Skip to content

Rotor offset #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 26 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d7689a8
Create .gitignore
ayushagrawal24 Jul 10, 2020
c890222
Working encoder
ayushagrawal24 Jul 10, 2020
f45fc38
Merge pull request #1 from ayushagrawal24/EnigmaEncoder
ayushagrawal24 Jul 10, 2020
b998d26
Update .gitignore
ayushagrawal24 Jul 10, 2020
2679077
Update .gitignore
ayushagrawal24 Jul 10, 2020
402a1d5
Update .gitignore
ayushagrawal24 Jul 10, 2020
7cec889
Made dynamic and string-friendly
ayushagrawal24 Jul 11, 2020
def9359
Added methods to change enigma configuration
ayushagrawal24 Jul 11, 2020
eaf0aa7
Merge pull request #2 from ayushagrawal24/EnigmaEncoder
ayushagrawal24 Jul 11, 2020
adb7423
Bugfix
ayushagrawal24 Jul 11, 2020
56d330a
set up eclipse IDE
rajatagarwal457 Jul 11, 2020
e05a90b
Merge pull request #3 from ayushagrawal24/rajat
rajatagarwal457 Jul 11, 2020
d3101b8
Merge branch 'master' into EnigmaEncoder
ayushagrawal24 Jul 11, 2020
60751c5
Merge pull request #4 from ayushagrawal24/EnigmaEncoder
ayushagrawal24 Jul 11, 2020
c94c67f
Added ability to set offsets at setup
ayushagrawal24 Jul 11, 2020
4fc5781
Merge branch 'master' into Decrypter
ayushagrawal24 Jul 11, 2020
b017b6b
Merge pull request #5 from ayushagrawal24/Decrypter
ayushagrawal24 Jul 11, 2020
494a8f5
Added RotorConfig struct
ayushagrawal24 Jul 11, 2020
6d1d65c
Merge conflicts resolution
ayushagrawal24 Jul 11, 2020
d65039d
Attempt at fixing xcode gitignore
ayushagrawal24 Jul 11, 2020
6c7b18a
Merge pull request #6 from ayushagrawal24/Decrypter
ayushagrawal24 Jul 11, 2020
3e200c5
Fixed eclipse gitignore
ayushagrawal24 Jul 11, 2020
5e5d497
Added all .DS_Store to gitignore
ayushagrawal24 Jul 11, 2020
814c093
Merge pull request #7 from ayushagrawal24/FixGitignore
ayushagrawal24 Jul 11, 2020
851a116
Cracks rotor Offsets
rajatagarwal457 Jul 12, 2020
8a882d1
commmit
rajatagarwal457 Sep 30, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 109 additions & 0 deletions .cproject
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.PE64" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827" name="Debug" parent="cdt.managedbuild.config.gnu.mingw.exe.debug">
<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.debug.812070035" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.debug">
<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.debug.1330524006" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.debug"/>
<builder buildPath="${workspace_loc:/EnigmaSim}/Debug" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1461646353" managedBuildOn="true" name="CDT Internal Builder.Debug" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug.169482272" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1696780344" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.529097471" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.318644023" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug">
<option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.208736561" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
<option defaultValue="gnu.cpp.compiler.debugging.level.max" id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.1248996545" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1093408014" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1316591078" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug">
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.961770079" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" valueType="enumerated"/>
<option defaultValue="gnu.c.debugging.level.max" id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.425511928" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1499640477" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug.761916342" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug.1716949590" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1974825012" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.1807081309">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.1807081309" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.PE64" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.release.1807081309" name="Release" parent="cdt.managedbuild.config.gnu.mingw.exe.release">
<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.release.1807081309." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.release.469183976" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.release">
<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.release.1324672807" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.release"/>
<builder buildPath="${workspace_loc:/EnigmaSim}/Release" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1068790786" managedBuildOn="true" name="CDT Internal Builder.Release" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release.6301802" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.777675885" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.79537360" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.377400840" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release">
<option id="gnu.cpp.compiler.mingw.exe.release.option.optimization.level.128071549" superClass="gnu.cpp.compiler.mingw.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
<option defaultValue="gnu.cpp.compiler.debugging.level.none" id="gnu.cpp.compiler.mingw.exe.release.option.debugging.level.1635659020" superClass="gnu.cpp.compiler.mingw.exe.release.option.debugging.level" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.554228013" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.943848031" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release">
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.mingw.exe.release.option.optimization.level.734129283" superClass="gnu.c.compiler.mingw.exe.release.option.optimization.level" valueType="enumerated"/>
<option defaultValue="gnu.c.debugging.level.none" id="gnu.c.compiler.mingw.exe.release.option.debugging.level.89060243" superClass="gnu.c.compiler.mingw.exe.release.option.debugging.level" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.907176502" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release.474802032" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release.1837648623" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.580217846" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="EnigmaSim.cdt.managedbuild.target.gnu.mingw.exe.1597947624" name="Executable" projectType="cdt.managedbuild.target.gnu.mingw.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827;cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1316591078;cdt.managedbuild.tool.gnu.c.compiler.input.1499640477">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1807081309;cdt.managedbuild.config.gnu.mingw.exe.release.1807081309.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.377400840;cdt.managedbuild.tool.gnu.cpp.compiler.input.554228013">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1807081309;cdt.managedbuild.config.gnu.mingw.exe.release.1807081309.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.943848031;cdt.managedbuild.tool.gnu.c.compiler.input.907176502">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827;cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.318644023;cdt.managedbuild.tool.gnu.cpp.compiler.input.1093408014">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
</cproject>
38 changes: 38 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -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
27 changes: 27 additions & 0 deletions .project
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Enigma-Simulator</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>
25 changes: 25 additions & 0 deletions .settings/language.settings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="cdt.managedbuild.config.gnu.mingw.exe.debug.1340108827" name="Debug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="1771184236938503793" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
<configuration id="cdt.managedbuild.config.gnu.mingw.exe.release.1807081309" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="1771184236938503793" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
</project>
13 changes: 13 additions & 0 deletions .settings/org.eclipse.cdt.managedbuilder.core.prefs
Original file line number Diff line number Diff line change
@@ -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
66 changes: 66 additions & 0 deletions EnigmaMachine/EnigmaMachine/EnigmaDecrypter.cpp
Original file line number Diff line number Diff line change
@@ -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 <iostream>
#include "Utils/config.h"
#include <string.h>

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;
}
31 changes: 31 additions & 0 deletions EnigmaMachine/EnigmaMachine/EnigmaDecrypter.hpp
Original file line number Diff line number Diff line change
@@ -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);
};
35 changes: 35 additions & 0 deletions EnigmaMachine/EnigmaMachine/EnigmaMachine.cpp
Original file line number Diff line number Diff line change
@@ -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<NO_OF_ROTORS; i++){
_rotorSet.setRotorOffset(i, offsets[i]);
}
}
Loading