Enigma was the name that the British used for the german machine that generated what was believed to be an unbreakable code. There system was based on rotors that turn inside the machine every time you press a letter. Each rotor had the alphabet on it in a different order. When you wanted to encode a letter (lets use a three rotor system because that is what I implement in C++) first find the letter on the smallest (first) rotor then get the letter in the same position on the large (third) rotor. Take this letter and find it on the middle (second) rotor then the encoded letter is the letter on the large rotor it the same positon. Why do I say small middle and large? This is because you can make your own enigma machine click here to find out how. Decoding is similar, but in reverse. First find letter on large rotor find correspoding letter on middle rotor, take this and find it on large again and the answer is the coresponding letter on the small rotor. But this is emensely complecated if the germans expected their army to this for every letter they transmitted they would have huge trouble. So the German's developed a machine that did it for them. It was an amazing technological acheivement at the time. Yet with the event of computers to accomplish a similar task now is very easy. So I have developed a computer version of the machine. You can
download it below.
Check Out the new Online Enigma Machine
enigma.zip - the encoder and decode code + executables (first working version)
enigma.cc -the encoder (first working version)
enigmad.cc -the decoder (first working version)
I use Emacs and GCC to write and complie my programs. Both are freely avaliable on the web use the link below to
find out more. DJGPP is another free compiler that I used when
I first started out but it is harder to use.