This C++ project is an Enigma machine simulator. It implements specifically the Enigma I, but additional machines can be easily created with the defined Plugboard, Rotor, Reflector, Entrywheel, and Enigma classes.
- Modify the machine's settings in
test/run_enigmaI.cpp
(no fancy CLI at the moment) - Run
./pre_build.sh
- To encode/decode a message, use something like
./build/test/run_enigmaI "MESSAGE in lower or upper case"
- Plugboard
- Entry wheel (aka ETW)
- Rotors
- Reflector (aka UKW)
- Rotors with multiple notch positions
- Other Enigma variants
- CLI includes Enigma settings
Wheel: ABCDEFGHIJKLMNOPQRSTUVWXYZ Turnover (right letter)
ETW: ABCDEFGHIJKLMNOPQRSTUVWXYZ
I: EKMFLGDQVZNTOWYHXUSPAIBRCJ Q
II: AJDKSIRUXBLHWTMCQGZNPYFVOE E
III: BDFHJLCPRTXVZNYEIWGAKMUSQO V
IV: ESOVPZJAYQUIRHXLNFTGKDCMWB J
V: VZBRGITYUPSDNHLXAWMJQOFECK Z
UKW-A: EJMZALYXVBWFCRQUONTSPIKHGD
UKW-B: YRUHQSLDPXNGOKMIEBFZCWVJAT
UKW-C: FVPJIAOYEDRZXWGCTKUQSBNMHL
https://en.wikipedia.org/wiki/Enigma_machine https://en.wikipedia.org/wiki/Enigma_rotor_details https://www.cryptomuseum.com/crypto/enigma/i/index.htm http://users.telenet.be/d.rijmenants/en/enigmatech.ht