Hi, and welcome to this video!

This is the second video of a small series of videos in which I will show how to implement the enigma machine using the C programming language.

The Enigma Machine is an electro-mechanical device that implements an extremely complex substitution cipher. That is, it works by using electricity, but it also has parts that move mechanically. This machine was used by the forces of the Axis during the Second World War in order to protect their communications.

Given that the machine has many different parts, I've decided to split this project into three different videos. In the first one I will give an overview of the machine and I will explain in depth the internals of the machine. In the second video we will implement the core library, and in the third and final video we will implement a simple CLI that will allow us to interface with our enigma machine.

I hope you find the video interesting, and if you have some feedback, please leave it in the comments down below!

-------------------------

TIMESTAMP

00:00:00 Introduction
00:01:30 Setting up the project
00:04:45 Includes, defines and typedefs
00:10:30 Data Structures
00:17:15 Makefile and Compilation
00:20:00 More Data Structure
00:25:00 Public APIs: enigma_encrypt() and enigma_decrypt()
00:30:12 Main Loop: apply_enigma()
00:37:00 apply_reflector()
00:38:10 apply_plugboard()
00:40:17 apply_rotors()
00:43:42 apply_rotor()
00:46:30 move_rotors()
00:50:25 Initialization API: init_enigma()
00:56:40 init_plugboard()
00:58:00 init_reflector()
01:01:20 init_wiring()
01:02:45 init_rotors()
01:08:00 Conclusion

-------------------------

REFERENCES

- Material: https://github.com/LeonardoE95/yt-en/tree/main/src/2024-02-25-from-scratch-enigma-machine-core-implementation
Code: https://github.com/LeonardoE95/enigma-machine
Blog post: https://blog.leonardotamiano.xyz/tech/enigma-machine-c/
Enigma Historical Configuration: https://www.cryptomuseum.com/crypto/enigma/
Double Step Mechanism: https://www.youtube.com/watch?v=hcVhQeZ5gI4


-------------------------

CONTACTS

- Blog: https://blog.leonardotamiano.xyz/
- Github: https://github.com/LeonardoE95?tab=repositories
- Support: https://www.paypal.com/donate/?hosted_button_id=T49GUPRXALYTQ