A typescript enigma machine
Using npm:
$ npm i @whambulance/enigma-machineImport into your project:
import enigma from 'enigma-machine'enigma-machine currently supports Enigma I rotors 1 through 8, with reflectors UKW b, c, b thin, and c thin.
Initialize the machine as such:
let machine = new enigma
let solvable = 'There is no escape, we pay for the violence of our ancestors.'
let result = machine.solve(solvable)
return result
$ 'cficm ww wi fjuegd, cs ojj zet zxo xsbspyff la cfb wdbqmjfme.'Update the rotors currently inserted. Array positions are handled left to right - {0: Left, 1: Middle, 2: Right}
machine.rotorsSelected = [5, 1, 2]Update the starting positions of the currently inserted rotors. Array positions are handled the same as rotor selection
machine.rotorPositions = [5, 1, 2]Update the currently inserted reflector plate
machine.reflectorSelected = 3Update the inserted plugs for plugboard combinations. Specify an array of two character length strings, each provided string represents a single combination. I.e. ['ab', 'cd'] would make A become B, and D become C.
machine.plugboard = ['bq', 'cr', 'di', 'ej', 'kw', 'mt', 'os', 'px', 'uz', 'gh']key is the value used to specifiy which rotor you want to use
| Key | Rotor Name | Characters |
|---|---|---|
| 0 | I | ekmflgdqvzntowyhxuspaibrcj |
| 1 | II | ajdksiruxblhwtmcqgznpyfvoe |
| 2 | III | bdfhjlcprtxvznyeiwgakmusqo |
| 3 | IV | esovpzjayquirhxlnftgkdcmwb |
| 4 | V | vzbrgityupsdnhlxawmjqofeck |
| 5 | VI | jpgvoumfyqbenhzrdkasxlictw |
| 6 | VII | nzjhgrcxmyswboufaivlpekqdt |
| 7 | VIII | fkqhtlxocbjspdzramewniuygv |
key is the value used to specifiy which reflector you want to use
| Key | Reflector Name | Characters |
|---|---|---|
| 0 | UKW B | yruhqsldpxngokmiebfzcwvjat |
| 1 | UKW C | fvpjiaoyedrzxwgctkuqsbnmhl |
| 2 | UKW B Thin | enkqauywjicopblmdxzvfthrgs |
| 3 | UKW C Thin | rdobjntkvehmlfcwzaxgyipsuq |