http://www.student.brad.ac.uk/nchilton/java/Enigma.html