Unavaliable Features in Online Version
The Online Version of jambeCodec_Enigma can't save and load files because Java doesn't allow access to the client computer from the web. However if you download and compile the code you will be able to the save and load
How Does it Work?
This Enigma Machine is very simple it works off only 3 rotors (I think the german enigma used 7). It also doesn't let you set different starting positions for the rotor. This does make it easier to understand, and it is compatible with my buggy c++ code and my paper and scissors enigma machine.
Enigma machines basicly works like a substitution cypher except that the cypher changes for each letter.
So a repeated aaaaaaa would produce a string of different characters ("NXGQ JTC" in the case of my machine).
Basicly the system is comprised of rotors, each rotor having the alphabet on it in a different order. Every time a letter is encoded, a rotor is turned creating a new code for the next letter.
To help you understand I recommend you print out my paper and scissors enigma this will help you visualize what is going on.
When you want to encode a letter you find the letter on the small rotor then get the letter in the same position on the large rotor. Take this letter and find it on the middle rotor, the encoded letter is the letter on the large rotor it the same positon.
Example: Lets encode the letter 'a'
First we find 'A' on the small rotor this corresponds to 'H' on the large rotor.
Next we find 'H' on the middle rotor, this corresponds to 'N' on the large rotor.
'N' is our encoded letter! we now turn the small rotor one space.
When that rotor is completing one whole turn you turn the middle rotor as well, so that the next time through you get a different set of cyphers again.
EnigmaApplet.zip - the Java code nicely zipped
I use Emacs and Javac to write in Java,
My Emacs Reference Guide
A Full featured Java Enigma Machine by Russell Schwager
Helger's Enigma Links
A RiscOS Enigma Simulator with heaps of links to other Enigma Pages