← Tutti i video

Macchina Enigma in C

Guarda su YouTube → 1:43:39 27 settembre 2023

Descrizione

La macchina Enigma è oramai passata alla storia per via del suo utilizzo durante la seconda guerra mondiale da parte dell'Asse formato da Germania, Italia e Giappone. L'esercito tedesco in particolare ha utilizzato Enigma fin dall'inizio della guerra per proteggere le proprie comunicazioni. A loro insaputa però, prima i polacchi, tra cui ricordiamo Marian Rejewski, Henryk Zygalski e Jerzy Rozicki, e successivamente, gli Alleati di Bletchley Park, tra cui ricordiamo Alan Turing, Gordon Welchman, John Jeffreys e Dilly Knox, riuscirono a trovare dei meccanismi che, in determinati casi, permettevano di scoprire lo stato interno di Enigma e dunque di decifrare i messaggi e leggere le comunicazioni dei tedeschi. In questo video mostro come implementare il funzionamento logico della macchina Enigma tramite il linguaggio di programmazione C. ------------------------------------ MATERIALE ORIGINALE: - Gitea: https://git.leonardotamiano.xyz/leo/enigma-machine - Github: https://github.com/LeonardoE95/enigma-machine ------------------------------------ RIFERIMENTI ESTERNI: - Movimento: https://www.youtube.com/watch?v=ds8HoowfewA - Double Step 1: https://www.youtube.com/watch?v=5StZlF-clPc - Double Step 2: https://www.youtube.com/watch?v=hcVhQeZ5gI4 - Wirings: https://www.cryptomuseum.com/crypto/enigma/wiring.htm ------------------------------------ TIMESTAMPS: 00:00:00 Introduzione 00:08:15 Creazione Makefile 00:10:46 Descrizione di Enigma 00:24:00 Header-only library 00:29:52 Strutture dati principali 00:41:30 Funzioni principali 00:45:27 API principale – enigma_encrypt() 00:47:40 Loop principale – apply_enigma() 00:58:03 Riflettore – apply_reflector() 01:00:00 Plugboard – apply_plugboard() 01:05:40 Rotori – apply_rotors() 01:08:05 Rotore – apply_rotor() 01:12:04 Movimento – move_rotors() 01:21:33 Funzioni per inizializzare la memoria 01:23:35 init_enigma() 01:26:04 Riflettore – init_reflector() 01:29:15 init_wiring() 01:29:50 reverse_wiring() 01:32:20 Rotore – init_rotor() 01:35:20 Esempio – simple.c 01:41:30 Conclusione ------------------------------------ PER CONTATTI: - Website: https://leonardotamiano.xyz - Academy: https://academy.leonardotamiano.xyz - Email: leo95.yt@gmail.com

Commenti 5

I commenti vengono da YouTube e sono aggiornati periodicamente.

  1. @esadecimale Autore 3 ottobre 2023 1
    NOTA: Il codice è stato ulteriormente aggiornato e sistemato, guardare sul github/gitea per accedere alle ultime versioni
  2. @LucaCanali 27 settembre 2023 1
    Come sempre molto bello e sempre interessante anche xche' riesci ad inserire sempre nuovi concetti/nozioni 💪
  3. @gabriele1559 22 settembre 2024
    Complimenti, una domanda: perché non usi un compilatore come codeblocks? Altra domanda: perché non usi char che è a 1 byte ma usi uint8_t?
  4. @acogacog1222 28 marzo 2025
    ciao ottimo video, domanda un po off-topic hai fatto video per quando riguarda il modo in cui hai fatto il setup del tuo ide
    1 risposta
    1. @esadecimale Autore 29 marzo 2025
      Ciao, qui ho usato emacs dentro ad un docker. Era un setup un po particolare, in ogni caso utilizzo sempre Emacs Rispetto alla config, ci sto lavorando questi giorni