-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enigma Rota Wiring Tables - Off by one #634
Comments
I'll let @s2224834 answer this more fully, but please see the following from the wiki article:
|
For the reflectors, this is just a case of a slightly different format. Since the reflector can only swap pairs of letters, we're using the same paired syntax for the reflector as for the plugboard settings - i.e. for the reflector B, (To be entirely pedantic, there is a generalised version of this syntax for rotors, but instead of pairs of letters you have arbitrary-length cycles.) For the stepping points, again it's really just a stylistic choice. The Wikipedia article you linked, for example, lists Z (for rotor V) but also notes that "If rotor steps from Z to A, the next rotor is advanced". This other Wikipedia page on the other hand lists A for rotor V, as we use. It also helpfully lists the mnemonic used at Bletchley Park to remember these. We've followed the same style as BP did, for reasons that should probably be obvious! |
The rotor wiring tables in the Enigma Decoder are different to those published in other sources.
For example:
The Reflector Settings for B in Cyberchef (https://github.com/gchq/CyberChef/blob/master/src/core/lib/Enigma.mjs#L37) are
{name: "B", value: "AY BR CU DH EQ FS GL IP JX KN MO TZ VW"}
However Wikipedia (https://en.wikipedia.org/wiki/Enigma_rotor_details) and other sources like the python enigma library (https://bitbucket.org/bgneal/enigma/src/default/enigma/rotors/data.py) list this sequence as:
YRUHQSLDPXNGOKMIEBFZCWVJAT
This seems to be the case for the Reflectors and the Stepping Value for each Rotor
For example in CyberChef Rotor V has a stepping Value of
A
whilst the other sources list this asZ
This difference means that anything encoded with an external library is not compatible with cyberchef.
Can anyone offer any guidance on who is correct here?
Thanks
The text was updated successfully, but these errors were encountered: