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

Extra Example from website

 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