Enigma Machine Simulation Project Design

Introduction

This project is to create an Enigma Machine simulation.

The document is my first pass through a design. The as-build (code) is somewhat different. (See the other documents.)

Program #1

Create rotor configurations and write them to a file. In order to share them, the configuration file format is standardized and will

  1. contain eight rotors (I, II, III, IV, V, VI, VII, VIII)
  2. each rotor with have 26 letters
  3. each rotor's internal wiring will be randomly generated
  4. The configuration file will contain csv data
  5. each line will have the following format: Rotor,input letter,output letter
    for example
    I,A,X
    I,B,D
    ...
    ...
    II,A,Q
    II,B,U
    ...
    ...

Note:

  1. If this is a class project common reflector and rotor configurations should be used. This will allow students to send and receive encrypted messages from other students.
  2. You can use this program to create a reflectors configuration. (format: R,input letter,output letter)
  3. The rotor and reflector configurations can be in a single file
  4. Hint: look up random.shuffle()

Program #2

Simulate an enigma machine, and only use rotors.

  1. read a rotor configuration file
  2. allow the user to select which rotors to use
  3. allow the user to select which position to place each rotor (left, middle, right)
  4. allow the user to select the starting position for each rotor
  5. allow the user to entering text to be encrypted
  6. allow the user to enter text to be decrypted
  7. limit the amount of text to be entered at one time to (60 characters?)
  8. on request, display the internal state of the simulation

Programs #3 and #4

This will be the same as program #1 and #2, with the plugboard added.

Allow the user to configure the plugboard. (interactive?) (add to rotor configuration file?) (separate configuration file?)

Program #5

Create a GUI for the simulation.

Enigma Machine Simulation Design

Rotor

  1. there will be 8 rotors available
  2. each rotor has a different wiring
  3. each rotor will have 26 letters (all caps)
  4. the rotors will be numbered (named) I, II, III, IV, V, VI, VII, VIII
  5. the rotor wiring will be in a data file and read by the simulation
  6. Each rotor supports starting on any letter
  7. The simulation will use 3 rotors
  8. every time there is a keypress, the right rotor is advanced one position. After a complete rotation, the middle rotor will be advanced one position. it is the same for the left rotor. when the middle rotor makes a complete rotation, the left rotor is advanced one position.
  9. the data input flow is to the
    1. right rotor, then to the
    2. middle rotor, then to the
    3. left rotor, then to the
    4. reflector, and back to the
    5. left rotor, then to the
    6. middle rotor, then to the
    7. right rotor, then to the
    8. data display

image missing

Plug Board

The plug board will allow the user to select any two letters to be swapped. This means up to 13 swaps are possible.