Translating Enigma Cipher Machine into Assembly Language

Nov 9, 2012 by

Translating Enigma Cipher Machine into Assembly Language

Never before has the fate of so many lives been so influenced by one cryptographic machine, as in the Second World War. Enigma showed the importance of cryptography to military and civil intelligence.

Our objective was to design the process of Enigma machine with assembly language for x86 processors. The bonus objective was to implement the program making it fancier once everything has been tested and was working properly.

My approach towards the project was to break down the process and understand the very basics of it. Then after modularizing the project prioritize it by deciding where to start and where to end. Lastly testing each component before moving along to make sure it was working perfectly.

After breaking everything down I have realized that I have seven main components to work on: Three rotors along with the reflector, plug board, input panel and output panel. After that I started taking notes on separate components and making sure to notice any special cases, exceptions or errors that would need to be handled individually. One of the special cases I found had to do with the rotors, which after researching I have found was called the double-step. During that double-step there were special characters which moved the rotors with one single step and therefore would make the whole process more complicated. The special characters were “V” and “E”. Anytime the third rotor was on “V” the next time when it was rotated it would move the second rotor with a single step. Similarly when the second rotor was “E” the next time it was moved it would move the first rotor with a single step.

My partner came up with a great idea on integrating Caesar Cipher into the entire project which became our bonus objective.

After exhausting hours in front of the computer screen, researching information and rewriting codes we were finally ready for our presentation. Everything went great and our program worked perfectly with no errors.