The Enigma machine is a cipher device developed and used in the early- to mid-20th century to protect commercial, diplomatic, and military communication. It was employed extensively by Nazi Germany during World War II, in all branches of the German military. The Enigma machine was considered so secure that it was used to encipher the most top-secret messages.
The Enigma has an electromechanical rotor mechanism that scrambles the 26 letters of the alphabet. In typical use, one person enters text on the Enigma's keyboard and another person writes down which of the 26 lights above the keyboard illuminated at each key press. If plain text is entered, the illuminated letters are the ciphertext. Entering ciphertext transforms it back into readable plaintext. The rotor mechanism changes the electrical connections between the keys and the lights with each keypress.
- Installation can be done via downloading a stable release
View the latest releases available
Choose a release version and download the .zip file and extract it.
gcc .\config.c .\enigma.c .\finish.c .\last_log.c .\log_table.c .\logging.c .\login.c .\main.c .\mode.c .\verification.c .\settings.c
Technology used: The C Programming Language
Each source file contains comments to explain the workflow. Usage includes different types of both Encryption and Decryption. for this project the 3-Rotored model was taken as the refrence. please read the "usage.txt" before installation and use. The program can be used in three modes :
-
1)Single character wich shows the exact workflow in each session.
-
2)An array of characters as input and then another array as output.
-
3)A ".txt" file as input and another one for output
Please read "usage.txt" before installation and use. This machine has three different types of input/output. And two different types of configuration. The machine will recover the latest config. In the first start you will be asked to setup the machine completely.
- Main driver source code :
#include "config.h"//Header well-documented.
int main(void)
{
// ########################################## CLI AND MENU
// Show welcome page and ask username & password
login();
// ########################################## MEMORY RESERVATION
Rotor RotorsArr[4];//Four rotors and one reflector
char ArrPlug[26];//Plugboard Array
// ########################################## Setting Configuration
config(RotorsArr, ArrPlug);//Rotor and plugboard configuration
check_last_log(RotorsArr);
while (1)
{
int selected_mode = select_mode(); // Select input/output mode
// ########################################## Main Algorithm
enigma(selected_mode, RotorsArr, ArrPlug);
save_rotor_posisions(RotorsArr);
finish();
}
return 0;
}
// END OF FILE
- Live previews .
- Cross platform .
- Real time/exact workflow table.
- Machine will recover the latest config.
- Morse code .
- Config files .
- Functional Usage (i.e. txt to txt) .
- Interactive Command Line Interface(CLI) .
- Detailed log files .
- Three different methods of using the machine.
- Capable of modifying the configuration in two different ways.(CLI & .TXT) .
- Encrypted Username and password.
- Well adjusted requests.
- Username and password Verification .
- Username and password check
We are freshman students at "Isfahan University of Technology"
This is a school project and our group members are :S
For support, [email protected].
If you have any feedback, please reach out to us at [email protected]
Here are some related projects :