Comments (2)
This is a rather old toy project, but I will try to answer as best as I can remember.
The reflector can only be B or C, anything else (A,D, etc.) is flagged as invalid
On the M3/M4 enigma, only "B" and "C" reflectors are available, as far as I know. A reflector "A" does indeed exist, and was created for the first enigma, but was discontinued in 1937.
In the source, I also have reflectors B Dünn
and B Dünn
. As far as I remember, they were "variants" of the B/C reflectors (I think I mad then available on command-line too). You can also implement reflector A easily (the Reflector
interface has only 2 simple methods) if you need to.
More info on this: https://people.physik.hu-berlin.de/~palloks/js/enigma/index_en.html#s7
There is no explanation about the Window parameter, what it means, what are valid settings, etc.
This is a tricky one. If I remember right, the window position refers to where the "notch" of the rotor ring is located, and this is needed to know "when" to step the "next" rotor. I don't remember the details, but it was quite tricky to understand. This link may help, but it is not an easy ride: https://www.cryptomuseum.com/crypto/enigma/working.htm
And what about the Plugboard? in the machine it consisted of key pairs but that doesn't seem to be handled by command-line parameters.
You got it right, it is just a "dumb" translation of letter pairs. And yes, I did not add it to the command line just because it was to wordy to add (you would have to input the whole alphabet) and I figured out anyone would hardly ever use that. The exising CreatePlugboard
can create a custom plugboard if you need it (or you can implement the interface yourself).
from enigma.
This is what can be said so far comparing the available Enigma description and matching it to your CLI. I will use the Day 20 settings of the Luchtwaffe coding sheet referred previously:
- Umkehrwalze is the chosen Reflector (-f or --reflector): B (assumed)
- Walzenlage is the positioning order of the three Rotors (-r or --rotors) or wheel choice & order: V,II,III
- Steckerbrett is the Plugboard key-pair translation. Your default app implementation is self-steckered, but I updated the source to let the user apply a plugboard (-p or --plugboard): ZGNWSMVYXTUROCLBAQHF
- Grundstellung is the starting position of each of the three wheels or rotors (-w or --window): ??? don't see the relation to the code sheet
- Ringstellung is the adjustable index position (-r or --ring) of each wheel/rotor: 07 (G), 18 (R), 04 (D)
However, while your README explains how to use the program, it does not explain how to make this experiment useful. In other words, we can encrypt using the sample application but there is no explanation HOW the user, can make a round-trip and decrypt the output of your software.
from enigma.
Related Issues (4)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from enigma.