Un emulatore della macchina Enigma
Alcuni mesi fa ho letto un libro sulla storia di Alan Turing. Tra le tante cose, ha fatto parte di un gruppo di crittografi che, durante la seconda guerra mondiale, aveva l’obiettivo di decodificare le comunicazioni dell’esercito tedesco criptate utilizzando la macchina Enigma.
Mi è sembrata un’idea interessante da utilizzare come progetto di studio, così per esercitarmi meglio in Golang ho deciso di implementare un emulatore della macchina Enigma. Il risultato è stato enigma un progetto Open Source pubblicato su Github e rilasciato con licenza Creative Commons Zero.
Credo che la parte più complessa del progetto sia stata reperire tutte le informazioni necessarie per capire i requisiti che l’emulatore dovesse avere.
Ho deciso di scrivere questo articolo per riportare tutte le risorse web che ho utilizzato per arrivare a raccogliere tutte le informazioni che servono.
Alcune risorse che ho seguito:
- https://en.wikipedia.org/wiki/Enigma_machine
- http://www.cs.cornell.edu/courses/cs3110/2015fa/a1/a1.html
- https://en.wikipedia.org/wiki/Enigma_rotor_details#Rotor_offset
- https://www.codesandciphers.org.uk/enigma/
- https://www.codesandciphers.org.uk/enigma/enigma3.htm
- https://brilliant.org/wiki/enigma-machine/
- https://www.cs.miami.edu/home/harald/enigma/index.html
Probabilmente il link che mi ha aiutato di più a capire il processo di codifica e il movimento dei rotori
Un paio di emulatori online usati come verifica