Decryption Panel
EnigmaZone has the ability to crack encrypted messages with no assistance. Longer messages generally produce better results but take more time.
It’s a tribute to the ingenuity of the original Polish mathematicians and the Bletchley Park staff who continued their work that they were able to break messages without the use of computers, although they often used “cribs” which were pieces of known text that they knew would likely appear in the messages. EnigmaZone is able to crack messages without using cribs.
For our example decryption, we will use a genuine Wehrmacht message from 13 July 1941. Many messages were prefixed with five characters that do not form part of the message, the “Kenngruppe”, in this case “FHPQX”. In the decryption we will ignore these.
FHPQX FDZCJ JDKVW PYFDW POQZG TJQYY XAFRH SQESE RKGJB WBYPE OOKFM MPOMK QDDOL CPKHY PGUZY XBZYA NYSAX IPXVQ CPJBF FFDRD XFIJJ PPPEY ALCYK VLKXQ HWIRZ ANGWU JBWVJ YCKES MJQRY KQHCQ OKMMY WMCKV LZJDV ZXRUM RMNWF DZBQG XJQAP FFFZT AHJQZ PWQWN IVZWU IJTHO YXGDC OJUW
On the Decryption panel, we will choose German as the language:
The key difference between the language decryption settings is that the German setting is specific to the eccentricities that were used by the Germans when using the Enigma, for example X for space or full stop and Q instead of CH. The English decryption ignores these and assumes the text is plain English language without spaces.

Above we see the pasted message (minus the FHPQX) in the input box on the Decryption panel.
For the reflector setting we could choose B, C or All. Most of the time reflector B was used, so to save time we will leave it on the default B setting.

To start the decryption process, click the Start Decryption button in the Display panel.
The bombe display shows a representation of the decryption process. Each bombe is a parallel thread executing its own decryption instructions. In EnigmaZone, the bombe represents a particular combination of rotors. For example, the Enigma I decryption shows 60 bombes, representing the 60 ways of placing the five available rotors into three slots. The bombes in this program do not work exactly the same way as those at Bletchley Park, although there are similarities. The bombes show the rotor combination being tested, e.g. 123, the percentage complete and the current rotor stepping being tested on that bombe, ranging from AAA to ZZZ. The circumference of the bombe has a marker showing the current stepping of the “slow” wheel inside that bombe. A full revolution of this marker corresponds to 100% completion.

On the Decryption panel you can see some statistics for the decryption. In this example, the overall decryption is 0.05% complete and according to the ETA is likely to take almost another 33 hours. Each decryption is given a score based on its closeness to readable text.
You can also see the data for the “best decryption”, showing the rotor and other settings that resulted in the best score so far.
At the bottom of the Decryption panel you can see the text of the best decryption so far and the plug board connections that go with it. In the example above it does not appear to be readable German yet, so the process has some way to go.

After more than 10 hours of processing on this 4-core computer, we reach the above statistics. We still have almost 9 hours to go to completely finish, but you can see that at the timestamp of 7 hours 35 minutes we reached a particular decryption where the rotors were IV-II-III, the wheels were set to 14-12-22 (or NLV) and the rings are 1-1-15 (or AAO). Ten plug connections are shown.
The output text is as above. This is actually the correct decryption of the message. The operators would occasionally put garbles into the text, and misspellings too – some by design, some accidental. The cleaned-up text is below:
AN PANZ GRUPPE VIER SIEGFRIED SIEGFRIED TONI DIV STEHT SEIT EINS ZWO SIEBEN EINS EINS NULL NULL UHR MIT ANFAENGEN AM UNTERKUNFTSRAUM KANN. NIQT EINFLIESZEN DA DRITTE INF DIV UND AQTE PANZ DIV BLOQIEREN UND RAUM BELEGT HALTEN. DIV KDR
In English the text would read something like this:
To Panzer Group Four: Siegfried Siegfried Toni Division is since 12 July 11:00 hours with vanguard at the accommodation space. Cannot enter because 3rd Infantry Div and 8th Panzer Division block and space occupied. Division Kommandeur.
If you want you can enter the discovered settings into the Simulation panel and put the original encrypted message into the input box to see it deciphered using those settings. Because the Simulation and Decryption panels are completely separate, you can even do this while the decryption is running – it will not affect the process:

Because of the way that the automated decryption process works, there is no guarantee that the discovered settings are the actual settings used by the original operator. It is possible that different settings can provide the same results. This appears to be the case here, because the original settings on that particular day were known to be as follows. You can see that some settings are the same as ours, such as the rotor choice and ordering, but others are different:

The differences arise because in the automated decryption we are only trying to obtain the core wiring that corresponds to a readable message. This same core wiring can be produced by a different combination of wheel and ring positions. In our example, the first letter (F) is transcribed to O. With the correct original settings, the F is transcribed to A. This happens because of a left-rotor step that takes place on the first letter, a step which the automated decryption ignores to speed up the processing. There are occasions where this might occur in the middle of a message, giving only half a decryption. It is a trade-off in order to provide reasonable performance.
There are limitations to the automated decryption. Short messages are more likely to fail the process and produce garbled results. We are not able to check every combination of rotor/wheel/ring/plug and thus some shortcuts have necessarily been taken.
And this was just the Enigma I model. The Enigma M3 used the same three rotor slots but with a choice of eight rotors rather than five. On our bombe display this gives us 336 bombes to process. If our German message above was encrypted on an M3 (used by U-boats up to 1942), it could take a few days to get the same result – but still a reasonable timescale especially if you have access to a more powerful system such as a cloud-based virtual machine with a substantial number of vCPUs.
On most computers, trying decryption with the M3 or M4 is likely to lead to a slower user interface because it is very CPU-intensive.
When it comes to cracking messages, the big problem is the M4. With the 4th rotor we have an exponential growth in combinations. The M4 was used from 1942 on U-boats to give extra security and it provided great difficulties for code breakers who were familiar with the Enigma I and M3.
Using our authentic message from earlier, a full decryption on the same 4-core computer would take 476 days to complete. This is best suited to a distributed computing framework, and indeed this has already been done elsewhere. This is even more of a tribute to the work that the WWII code breakers performed, as they were indeed able to eventually break M4 messages.