winzip icon

Enigma Encryption Example

Email
Submitted on: 1/5/2015 6:48:00 AM
By: Mark Robert Strange (from psc cd)  
Level: Intermediate
User Rating: By 3 Users
Compatibility: VB 5.0, VB 6.0
Views: 678
 
     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 "AAAAAAAAAAAAA" are represented with garbage such as "@n~WPnHv(.)z#" Another great part about an encryption scheme like this is its 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. So, unless somone can figure out: 1) How many wheels are being used... 2) How many characters are on each wheel... 3) The order of the wheels... 4) The direction they spin... 5) The initial position of each wheel... 6) The order of the characters on each wheel... It would be virtually impossible to look at the encrypted characters and determine their relationship to one another. There are so many possibilities and combinations of the above criteria, it would have to be solved through brute force. I am no mathmatician, so if anyone can tell me the possible combinations, I would appreciate it. When the Germans used this machine, it baffled the Allies, who frantically tried to break it with no success. It wasnt until a German U-Boat was forced to surface in a naval battle and was captured that the Allies got a huge break. An Enigma machine was captured along with a code book that showed the information needed to decrypt the messages. The U-Boat was scuttled and the crew was kept in a top secret location. The U-Boat was simply considered lost during battle and Germans continued the war not knowing the truth. When the war in the Atlantic turned for the worse, the Germans, who believed their code to be unbreakable, believed that there were spies in their top level officials. They never considered that the code was being decrypted through a captured machine, so as a result, they set up elaborate networks to try and find these "spies". Paranoia being what it was, many loyal German officers were tortured and murdered for treason, even though they had commited no such offense. This code is by no means complete. I will try and enhance its speed and toughen its encryption even further. Ill also try and build a better sample app with more features. If you find a problem or have a suggestion, I would love to hear it. This program has now been updated to reflect many of the suggestions posted here. Thanks for some great feedback and keep coding! =)
 
winzip iconDownload code

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. Afterdownloading it, you will need a program like Winzip to decompress it.Virus note:All files are scanned once-a-day by Planet Source Code for viruses, but new viruses come out every day, so no prevention program can catch 100% of them. For your own safety, please:
  1. Re-scan downloaded files using your personal virus checker before using it.
  2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.
  3. Scan the source code with Minnow's Project Scanner

If you don't have a virus scanner, you can get one at many places on the net including:McAfee.com


Other 2 submission(s) by this author

 


Report Bad Submission
Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

Your Vote

What do you think of this code (in the Intermediate category)?
(The code with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)
 

Other User Comments


 There are no comments on this submission.
 

Add Your Feedback
Your feedback will be posted below and an email sent to the author. Please remember that the author was kind enough to share this with you, so any criticisms must be stated politely, or they will be deleted. (For feedback not related to this particular code, please click here instead.)
 

To post feedback, first please login.