Software - adanchak36/Enigma-I-Project- GitHub Wiki
Rotor Settings
Rotors
Rotor I: EKMFLGDQVZNTOWYHXUSPAIBRCJ
Rotor II: AJDKSIRUXBLHWTMCQGZNPYFVOE
Rotor III: BDFHJLCPRTXVZNYEIWGAKMUSQO
Rotor IV: ESOVPZJAYQUIRHXLNFTGKDCMWB
Rotor V: VZBRGITYUPSDNHLXAWMJQOFECK
These will rotate after a button is pressed.
Reflectors
Standard B: YRUHQSLDPXNGOKMIEBFZCWVJAT
Do not rotate
Machine Configuration
3 Main Inputs for setup
Example)
Walzenlage: Rotor Order
Ex: I II III
Ringstellung: Ring Settings
Ex: 23 02 17
Steckerverindungen: Plug Board Input
Ex: AR KT MW LC XD EJ ZB UY PS HN
**Rotors should now look like this: **
Right rotor start: `BRCJEKMFLGDQVZNTOWYHXUSPAI`
Mid rotor start: `JDKSIRUXBLHWTMCQGZNPYFVOEA`
Left rotor start: `IWGAKMUSQOBDFHJLCPRTXVZNYE`
Encryption
Example input (using example configuration above): L
Plug board scramble = L -> C
Yes starting from 0
ABCDEFGHIJKLMNOPQRSTUVWXYZ C = [2]
BRCJEKMFLGDQVZNTOWYHXUSPAI [2] = C (Right Rotor)
ABCDEFGHIJKLMNOPQRSTUVWXYZ C = [2]
JDKSIRUXBLHWTMCQGZNPYFVOEA [2] = K (Middle Rotor)
ABCDEFGHIJKLMNOPQRSTUVWXYZ K = [10]
IWGAKMUSQOBDFHJLCPRTXVZNYE [10] = O (Left Rotor)
ABCDEFGHIJKLMNOPQRSTUVWXYZ O = [15]
YRUHQSLDPXNGOKMIEBFZCWVJAT [15] = M (Reflector) -> Now we invert this process
IWGAKMUSQOBDFHJLCPRTXVZNYE M = [
Encrypted letter = O
Reflector
website
Extra Example from ABCDEFGHIJKLMNOPQRSTUVWXYZ G = [6]
BDFHJLCPRTXVZNYEIWGAKMUSQO [6] = C (Right Rotor: I)
ABCDEFGHIJKLMNOPQRSTUVWXYZ C = [2]
AJDKSIRUXBLHWTMCQGZNPYFVOE [2] = D (Middle Rotor: II)
ABCDEFGHIJKLMNOPQRSTUVWXYZ D = [3]
EKMFLGDQVZNTOWYHXUSPAIBRCJ [3] = F (Left Rotor: III)
ABCDEFGHIJKLMNOPQRSTUVWXYZ F = [5]
YRUHQSLDPXNGOKMIEBFZCWVJAT [5] = S (Start Inversion)
EKMFLGDQVZNTOWYHXUSPAIBRCJ S = [18] (Left Rotor)
ABCDEFGHIJKLMNOPQRSTUVWXYZ [18] = S
AJDKSIRUXBLHWTMCQGZNPYFVOE S = [4] (Middle Rotor)
ABCDEFGHIJKLMNOPQRSTUVWXYZ [4] = E
BDFHJLCPRTXVZNYEIWGAKMUSQO E = [15]
ABCDEFGHIJKLMNOPQRSTUVWXYZ [15] = P
Obstacles
Getting character input in C has its many challenges, and it does not work well with Arduino. So I had to switch from C to C++ and learn it.
Sources
https://www.codesandciphers.org.uk/enigma/rotorspec.htm technical specifications of the rotor
http://www.cs.cornell.edu/courses/cs3110/2016fa/a1/a1.html - Cornell project