enigma-machine
Enigma simulator in Typescript
Installation and Importation
Installation
$ npm install enigma-machine
Importation
// CommunJS
const EnigmaMachine = require('enigma-machine');
// Browser
<script src="https://unpkg.com/enigma-machine@1.1.3/build/browser.js"></script>
Machine creation
Creating a Rotor
const rotor1 = new EnigmaMachine.Rotor(/* RotorConfiguration Object */);
Creating a Reflector
const reflector = new EnigmaMachine.Reflector(/* ConnectionMap Object */);
Creating a Plugboard
const plugboard = new EnigmaMachine.Plugboard(/* ConnectionMap Object */);
Creating the Enigma Machine
const enigma = new EnigmaMachine.Enigma([rotor1, rotor2, rotor3], reflector, plugboard);
Creating an Enigma Machine from an EnigmaConfiguration
const enigma = new EnigmaMachine.Enigma.generateFromEnigmaConfig(/* EnigmaConfiguration Object */);
Message
Calculate a message with Enigma
const myMessage = enigma.calculateString('helloworld');
// Return 'lumquxgpzf' with a config that I lost :D
const mySecondMessage = enigma.calculateString('lumquxgpzf');
// Return 'helloworld' with the same config
See test file on GitHub
Generating configurations and ConnectionMaps
Generating a Rotor configuration
const rotorConfiguration = EnigmaMachine.generateRotorConfiguration();
RotorConfiguration
you can't use the generateConnectionMap
method !
Generating a ConnectionMap (used to configure a Reflector or a Plugboard)
// For a Reflector
const reflectorConnectionMap = EnigmaMachine.generateConnectionMap();
// const reflector = new EnigmaMachine.Reflector(reflectorConnectionMap);
// For a Plugboard
const plugboardConnectionMap = EnigmaMachine.generateConnectionMap();
// const plugboard = new EnigmaMachine.Plugboard(plugboardConnectionMap);
Generating an EnigmaConfiguration
const enigmaConfig = EnigmaMachine.generateEnigmaConfiguration();
Todo
- Improve the browser version of the lib (because I'm bundling it manually)
🖥️ Nothing (I hope)😀