1.1.1 • Published 2 years ago

@whambulance/enigma-machine v1.1.1

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

Enigma Machine

A typescript enigma machine

Installation

Using npm:

$ npm i @whambulance/enigma-machine

Import into your project:

import enigma from 'enigma-machine'

Use

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.'

Set Inserted rotors

Update the rotors currently inserted. Array positions are handled left to right - {0: Left, 1: Middle, 2: Right}

machine.rotorsSelected = [5, 1, 2]

Set Rotor positions

Update the starting positions of the currently inserted rotors. Array positions are handled the same as rotor selection

machine.rotorPositions = [5, 1, 2]

Set Inserted Reflector

Update the currently inserted reflector plate

machine.reflectorSelected = 3

Set Plugboard combinations

Update 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']

Supported Rotor list

key is the value used to specifiy which rotor you want to use

KeyRotor NameCharacters
0Iekmflgdqvzntowyhxuspaibrcj
1IIajdksiruxblhwtmcqgznpyfvoe
2IIIbdfhjlcprtxvznyeiwgakmusqo
3IVesovpzjayquirhxlnftgkdcmwb
4Vvzbrgityupsdnhlxawmjqofeck
5VIjpgvoumfyqbenhzrdkasxlictw
6VIInzjhgrcxmyswboufaivlpekqdt
7VIIIfkqhtlxocbjspdzramewniuygv

Supported Reflector list

key is the value used to specifiy which reflector you want to use

KeyReflector NameCharacters
0UKW Byruhqsldpxngokmiebfzcwvjat
1UKW Cfvpjiaoyedrzxwgctkuqsbnmhl
2UKW B Thinenkqauywjicopblmdxzvfthrgs
3UKW C Thinrdobjntkvehmlfcwzaxgyipsuq