Giter Site home page Giter Site logo

enigma-machine's Introduction

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

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

Supported Reflector list

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

enigma-machine's People

Contributors

whambulance avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.