The Cyclometer


Enigma Home Page

Description of the cyclometer

To manufacture the catalog intended to identify the daily key in the indicator method of 1930, Rejewski imagined a machine called a Cyclometer. This machine consists of two Enigmas, without Steckers, connected to each other (the output of the first being the input of the second and the output of second being the input of the first). The two sets of rotors would be offset by three positions to emulate the simultaneous encryption of two letters of the indicator (the 1st and the 4th or the 2nd and the 5th or the 3rd and the 6th). Then, via existing switches for each letter, one could display the different cycles (those of cycle theory) existing for a given Grundstellung (the position of the rotors of the first of the two letters) and for a given Walzenlage using lamps.

1938 indicator system and females

When the indicator system of 1938 was introduced, the Poles discovered a phenomenon which enabled them to find the Walzenlage (the order of rotors) and the Ringstellung.

As we have seen, the pairs of letters for indicator 1 and 4, 2 and 5 and 3 and 6 belong independently to three cycles. If one of the pairs is made up of identical letters, this corresponds to a cycle of one unit. The Poles called them "females". This phenomenon is not possible for every Grunstellung. The probability of having a female is only around 40%. Cycle theory tells us that having a female at a given Grundstellung or not happens independently of the Steckers.

The Zygalski’s sheets

To find the daily key when the indicator system changed in September 1938, the Polish Zygalski imagined a method which used perforated sheets (a hole corresponding to the presence of a female) superimposed (one sheet for each female found in traffic) until there is only one hole valid for the stacking. This last hole corresponds to a plausible solution of the Ringstellung of the middle and right rotors. Furthermore, for a given Walzenlage, all the Ringstellungs of the left rotor must be tested by making a new stack each time.

The position of each hole (a female) is calculated using the Cyclometer in the absence of turnover, the latter depending on the Ringstellung.

My Cyclometer simulator

I wrote a Cyclometer simulator. Here is an example of using.

1) Print the syntax

$ python3 cyclometer.py -h
usage:
  -h             Aide en ligne
  -v             Verbose (mode Debug)
  -W XYZ         The Walhzenage. Example:
     -W I,II,III [by default]
  -G XXX:ZZZ     The Grund domain. Examples:
     -G AAA:ZZZ  [by default], -G DGJ, AGA:AGZ, ...
  -R XXX:ZZZZ    The Ringstellung domain (ZZZ by default)
  -U UKW         The Reflector, by default B

2) Calculate the cycles

for a given Walzenlage and a given Grundstellung and a given Ringstellung
$ python3 cyclometer.py -W IV,I,II -R AAA -G CCC
Walhs Ring Grund pln cry - signature cycles grund (left,mid,rig)
================================================================
6-6-7-7 ZTWFQRO:LCUBSEJ:IHDKNP:GVAXMY IV,I,II AAA CCC

3) Calculate the cycles for a given Walzenlage for all Grundstellung

$ python3 cyclometer.py -W IV,I,II |more
Walhs Ring Grund pln cry - signature cycles grund (left,mid,rig)
================================================================
13-13 TQKUHBYWZOMSI:XVGFNARCEDLPJ IV,I,II ZZZ AAA
1-1-1-1-11-11 CHFXOGSQDNM:AKTJURIZEYV:L:B:W:P IV,I,II ZZZ AAB
13-13 VXZIMJNDTHSQB:LCWEURKPOFYGA IV,I,II ZZZ AAC
3-3-10-10 QYKGXSMHZF:UPLNEOWJDA:VCR:TBI IV,I,II ZZZ AAD
1-1-1-1-1-1-1-1-9-9 HIWOBETUF:LXPJAGQNR:K:Y:C:V:Z:M:D:S IV,I,II ZZZ AAE
...