Here is the concept behind this representation of the Enigma Machine:
The program uses virtual "wheels" that contain all of the printable characters on the keyboard. Think of the first wheel as the keyboard you are typing on. All of the wheels contain the same characters, but in a random, non-repeating order.
Each time a character is pressed, the location of that character on the one wheel is used to as the index to lift the character off of the next wheel. Then the new character is searched for in the next wheel, and the pattern repeats itself across each wheel. The character lifted off of the final wheel is the output.
This step is repeated for each character in the message. Decryption simply sends the message backwards through a similar, but reversed process.
What really makes this encryption effective is that like the real life machine, the wheels rotate either to the left or right after each character. So the relationship between each character shifts constantly. As a result, even repeating characters such as "AAAAAAAAAA" are represented with garbage such as "BGPVLKHWCD".
Another great part about an encryption scheme like this is it's flexibility. You can add more wheels, more characters per wheel, change the order of the wheels, the directions the wheels spin, and change the starting position of each wheel.
NOTE: Binary files require Microsoft's Visual Basic 6.0 Runtime Library (usually pre-installed in Windows XP).