This is an Enigma machine simulator written in Scala. It consist of three Rotors with 26 characters on them which would change by input characters, and a Reflector at the end which makes it possible to Code/Decode with the same setting.
Similar to an Enigma machine, First you need to generate Rotors' today setting from CLI. This will be saved in a file named
todays_rotor_state.enigma
. Then machine will be initialized using this setting.
For example for a plain text "aaaa"
, Enigma could return "xuie"
(based on Rotors' setting). If you give the cipher text "xuie"
back to Enigma,
it will decode to "aaaa"
.
For more info check the Wikipedia page.
Just run main.scala
and it gives you the instructions. Preferably using sbt
.
- Pickling to Pickle/Unpickle settings to
"todays_rotor_state.enigma"
file. - Scala 2.11 (other versions not tested)
- better-files for I/O
- Implement Plugboard
- Support different characters, especially space character
- Get setting from the input
- Create and rotate
Map
of Rotors, instead of searching into strings