Ir al contenido

Enigma encryption device

Calidad de creación: 5,0/5 (1 voto)
Evaluación de los miembros: imprimibilidad, utilidad, detalles, etc.

Descripción del modelo 3D

This thing is based on the Pringles Enigma by Franklin Heath Ltd that I discover via EscapeTechno's Machine Enigma.

Engima was probably the most advanced cryptographic device of its time. The challenge of decipher it had eventually lead to the realisation of the first computer.

Now, this work being done, I find it very useful to illustrate some concepts like reversibility (ciphering and deciphering are done the very same way) and information in computer science or to show how, in cryptography, a simple tiny device can encode so hard that break it require the resources of a nation !


Why all files are suffixed with "-30"? Because the radius is a parameter in the code and my first choice was 50mm that implies quite large prints. So I reduce this parameter to 30 (which seem to be near the limits of what I can print for the bigger pieces and for the smaller details). So all the files presented here are done with this value. I keep it because I do not exclude publishing smaller or bigger versions.

Note that "Bague" is the French for "ring": sorry there are many French words into the code and the file names.


  • enigma.scad
  • axis.FCStd

This is my first big project with OpenSCAD, so please, be indulgent with my code. It does not even include the trick I find to make easily an hollowed cylinder sector!

Also note that the threads for the axis and its cover where done with FreeCAD.

The interface and the plug board:

  • bague-finale-30.stl
  • spare-letters-30.stl

The "bague-finale-30" object represent the machine's text interface. Detached letters are here to emulate the plug board, by default each letter is inserted in front of the same letter on this ring. To emulate a wire on the plug board, you just have to inverse 2 of this letters (like the "L-P" and "M-O" couples on the illustration below)! Caution don't include a letter in more than one inversion!

When you want to treat (to encrypt or to decrypt) a letter you'll have to search it on this ring before verifying on its right that it isn't substituted. If so, you'll have to search the new letter on the static ring: you'll find the original letter on the right (as illustrated with the red path; the green one illustrate a case without substitution on the letter "N").

The final ring and its movable letter in the standard position

The rotors:

  • bague-[n]-30.stl
  • rotor-[n]-30.stl

The second rotor and its ring in the standard position

Each rotor has been separated in two parts: the connection pattern in the file beginning by "rotor" and the letter's ring in the file beginning by "bague". This separation permit to change the ring position relatively to the rotor. On each ring a different letter is carved (all the others are in relief).

To find back which rotor is associated with which ring, how to mount its ring and which one is it, there is 3 indications on each rotor:
- on the ring side (left) a mark show the tooth on which the 'A' may normally be placed,
- on the large side (right)
- the letter that should be carved on the corresponding ring
- the number identifying the rotor

Note that the teeth's margins are more important here than for the detached letters representing the plug board because they are many teeth to hold the ring and it still must be easy to remove and put back in an another position.

The dividers:

  • internaldisk-30.stl

You should print 3 of it. This objects are fix relatively to the axis, the reflector and the final ring. They have 2 roles: avoid that rotating a rotor made its neighbour rotate too and display the rotor's states (and the machine's one). In the case below, the rotor's state is "Q" and, as it's the engraved letter, next time you'll rotate it you'll need also to rotate its left neighbour.

Divider on the engraved letter: time to rotate its left neighbour

The reflectors:

  • reflector-B-30.stl
  • reflector-C-30.stl

That's the parts that ultimately link each letter with its cryptographic partner since the rotors only make substitutions: you can make a very minimalistic version with just a reflector and the final ring (without rotor or substitution). By the way it was an historical weakness of this machine that never a letter was represent by itself! Curiously, it seem that there is no version A: just B and C!


The axis:

  • axis-30.obj
  • axis-small-30.obj
  • bouchon-30.obj

"axis-30" object is coupling the "active" parts, letting rotors turn freely around it but not permitting the reflector, the dividers and the final ring to do so. It has 3 straight grooves parallel to its axis forming 3 different angles so that reflectors, the final ring and the dividers can only be inserted into the good position.

"axis-small-30" is a smaller version of "axis-30" to store the spare parts when the enigma machine is build: a reflector and 2 rotors.

"Bouchon" is the French for cover or plug. So, as you guess, the "bouchon-30" objective is closing the axis to maintain the machine's integrity after it's assembling.

Axis with a cut stopper

Axis are hollowed to manage a discrete storage that is a must have for an enigma !



Simplified enigma exploded-view

First things first, you should choose your reflector and put it on the empty axis. Next you have to choose your rotors and also put them on the axis with theirs dividers and rings as shown above on the exploded view of a simplified enigma (having only 2 rotors). Put the final ring and move the detached letters to mark the substitutions (as for "B-Z" and "C-Y" couples or the lake of it as for the "A" on the illustration above). Screw the stopper and finally place the rotors on the initial states you choose.

Fully assembled enigma

Ciphering and deciphering:

Ciphering and deciphering are done the very same way.

  1. First, rotate the rightmost rotor of 1 position; if, doing so, the carved letter leave the status position: rotate 1 position the rotor at the left. the same rule apply to the central rotor.
  2. Search the letter you have to treat (to encrypt or to decrypt) on right most ring (the one with the detached letters). To do so, search this letter on the neighbour ring with fixed ones: if the movable letter at its right is the same you just find it! If not search the letter you find on the movable ring on the fix one and you'll find the letter you search on the movable and rightmost ring.
  3. Follow the line on the rightmost rotor that begin if front of the letter, continue on the central one and the left one, next on the reflector and finaly go back through left, central and right rotor.
  4. Read the result on the rightmost ring!
  5. Restart from point 1 with the next letter.


Rotation generated by the middle rotor:

I think that when the marked letter pass away, the rule is to rotate it's left neighbour (if it exists). Other sources explain that's the rule only for the right one: for the central one, all the rotor should be rotate. With this second rule, as it's rotation is activated by the rotation of the right one, it make the right rotor always skip the position following the marked letter. This second rule reduce the machine's behaviour complexity while, ironically, increasing its mechanical one (such accidents append with the kriegsmarine's version which extra rotors made the next rotor rotate twice when they made a full turn: resulting in the use of only half of the possible machine's states).

I think the misunderstanding come from the fact that with the first rule, as a rotation of the central rotor is triggered by one of the right one and, if the central rotor was on the marked letter, that made the left one rotate so when the central one leave the marked position all the rotors rotate the same but the rotation of the right one is a cause and the rotation of the left one a consequence.

Rotation of the ring relatively to the rotor:

Here also, it is a complexity problem. Make the ring movable relatively to its rotor, ultimately, only change when the ring will trigger the rotation of its left neighbour. That seem me a important price in term of mechanical complexity and risk of confusion compared to the added cryptographic complexity.

Could the Germans win against Turning's team?

Turning and his team partly won the information battle due to the Germans's strictness lead to had constant behaviours on which Turing's team base its deciphering. One of them is that, as far as I know, all German submarines send meteorology data every mornings with the same enigma settings for every submarines. Messages almost always begin with the same first words.

If they, at first, send 3 random letters with the parameters of the day and them use it as the new machine setting for the rest of the message, I hardly see how Tring's team can decipher it!

Turn first read after:

This is curious at first but probably due to electromechanical constraints.

Direction of rotation:

It seem me logic to follow the alphabetical order but I do not remember having read something explicit about it !

More informations:

The best source I find on Internet :
Crypto Museum

Parámetros de impresión 3D


Información sobre el 3D archive

  • Formato de diseño 3D: OBJ y STL Detalles del fichero Cerrar
    • axis-30.obj
    • axis-small-30.obj
    • bague-1-30.stl
    • bague-2-30.stl
    • bague-3-30.stl
    • bague-4-30.stl
    • bague-5-30.stl
    • bague-finale-30.stl
    • bouchon-30.obj
    • eclate-2rotors.stl
    • internaldisk-2-30.stl
    • reflector-B-30.stl
    • reflector-C-30.stl
    • rotor-1-30.stl
    • rotor-2-30.stl
    • rotor-3-30.stl
    • rotor-4-30.stl
    • rotor-5-30.stl
    • spare-letters-30.stl

    Más sobre los formatos

  • Fecha de publicación: 2021-08-23 01:05
    Publicado en Thingiverse el: 2020-08-19 17:48





I'm a freelance software engineer living in Paris. Informations about my professional activity can be found on Linkedin or on Viadeo

For French speaking people, I also made videos giving some tips for modelling with FreeCAD on YouTube.

I mostly use FreeCAD for modelling. When procedural generation is highly useful I use OpenSCAD but I'm not happy with my code's quality !

Página traducida por traducción automática. Ver la versión original.
¿Tienes algún defecto en este diseño? Advertir de una problema

Los más vendidos de la categoría Variado

Añadir un comentario

¿Te gustaría apoyar Cults?

¿Te gustan Cults y quieres ayudarnos a continuar la aventura de forma independiente? Tenga en cuenta que somos un equipo pequeño de 3 personas, por lo que es muy sencillo apoyarnos para mantener la actividad y crear futuros desarrollos. Aquí hay 4 soluciones accesibles para todos:

  • PUBLICIDAD: Deshabilite su bloque de anuncios AdBlock y haga clic en nuestros banners.

  • AFILIACIÓN: Haga sus compras en línea haciendo clic en nuestros enlaces de afiliados aquí Amazon o Aliexpress.

  • DONACIÓN: Si lo desea, puede hacer una donación a través de PayPal aquí.

  • PALABRA DE BOCA: Invita a tus amigos a venir, descubre la plataforma y los magníficos archivos 3D compartidos por la comunidad!