> For the complete documentation index, see [llms.txt](https://sansong.gitbook.io/cyber/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sansong.gitbook.io/cyber/crypto/symetrique/enigma.md).

# Enigma

La machine **Enigma** se compose:

* d'un clavier
* d'un ensemble de rotors
* d'un réflecteur&#x20;
* d'un panneau d'affichage

<figure><img src="https://1813806532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZRRTPIEA4wb6exZozwS0%2Fuploads%2FRbygrLVBfvzgg6lF3EUd%2Fenigma.png?alt=media&amp;token=af704913-ae5e-44d5-8ea9-23ac96131299" alt="" width="320"><figcaption><p>Parcours du courant électrique dans la machine</p></figcaption></figure>

Lorsqu'une lettre est tapée sur le clavier, un signal électrique passe par les rotors, dont le câblage interne est complexe. Chaque rotor a une configuration de câblage différente, ce qui entraîne un brouillage complexe du signal d'entrée.&#x20;

Les rotors tournent à chaque pression de touche, ce qui modifie les connexions électriques et garantit qu'une lettre n'est pas toujours codée par le même caractère. Les rotations des rotors ne sont pas uniformes. Quand un rotor à fait un tour complet, celui à côté tourne d'un cran.&#x20;

Après avoir traversé les rotors, le signal est réfléchi par le réflecteur, ce qui permet d'assurer qu'une lettre n'est pas chiffrée par elle même (sinon court-circuit). Le signal repasse par les rotors et la lettre codée est ensuite affichée sur le panneau.

Les machines militaires ont en plus un tableau de connexions pour lier les lettres 2 à 2 en entrée et en sortie.

**Présentation ppt**

{% file src="/files/b5GQk6jpJ0mmagPK58lC" %}

**Implémentation C++**

{% embed url="<https://github.com/SamNzo/enigma>" %}
