Skip to content

lusingander/enigma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Reference GitHub

Enigma

Terminal Enigma machine simulator

Installation

$ go install github.com/lusingander/enigma/cmd/enigma-simulator@latest

(require Go 1.18+)

Usage

Keybindings

Key Description
A - Z input
Ctrl+c quit
Esc reset

Using as a library

import "github.com/lusingander/enigma/enigma"

func main() {
    e := enigma.NewM3(
        [3]enigma.Rotor{
            enigma.NewRotor1('A', 'A'), // (initial position, ring setting)
            enigma.NewRotor2('A', 'A'),
            enigma.NewRotor3('A', 'A'),
        },
        enigma.NewReflectorB(),
        enigma.NewPlugboard(),
    )

    e.EncodeString("HELLO") // returns "MFNCZ"
    e.EncodeString("HELLO") // returns "RHOZF"
}

License

MIT