Skip to content

sagarpshah/EnigmaKit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

𝕰𝖓𝖎𝖌𝖒𝖆𝕶𝖎𝖙

CI Status Version License Platform Alt text

𝖀𝖘𝖆𝖌𝖊

// Will create an Enigma with an empty plugboard, rotors I, II, III and reflector B (wide).
let enigma = Enigma()
// Will output "ILBDA AMTAZ"
let result = enigma.encode("HELLO WORLD")
let enigma = Enigma()
// "HELLO WORLD"
let result = enigma.decode("ILBDA AMTAZ")

To run the example project, clone the repo, and run pod install from the Example directory first.

𝕮𝖔𝖒𝖕𝖔𝖓𝖊𝖓𝖙𝖘

𝕻𝖑𝖚𝖌𝖇𝖔𝖆𝖗𝖉

// Create a plugboard and add a patch between A and D
let plugboard = Plugboard()
plugboard.addPatch(("A", "D"))

𝕽𝖔𝖙𝖔𝖗

// III rotor. EnigmaKit comes prebuilt with rotors I-VIII
let rotor = Rotor.III
rotor.setting = 5 // Internal ring position
rotor.position = 6 // Outer ring position

// Or initialize your own
let rotor = Rotor(name: "My custom rotor", wiring: "VZBRGITYUPSDNHLXAWMJQOFECK", notch: "QV")

𝕽𝖊𝖋𝖑𝖊𝖈𝖙𝖔𝖗

// EnigmaKit comes with reflector A-C (wide) and B-C (thin)
let reflector = Reflector.B

// Or you can create your own reflector
let reflector = Reflector(name: "My custom reflector", wiring: "VZBRGITYUPSDNHLXAWMJQOFECK")

𝕰𝖓𝖎𝖌𝖒𝖆

// Create an enigma with your own plugboard, rotors and reflector of choice
let enigma = Enigma(plugboard: Plugboard(), rotors: [Rotor.III, Rotor.IV, Rotor.II], reflector: Reflector.C)

𝕽𝖊𝖖𝖚𝖎𝖗𝖊𝖒𝖊𝖓𝖙𝖘

Don't mention the war

𝕴𝖓𝖘𝖙𝖆𝖑𝖑𝖆𝖙𝖎𝖔𝖓

EnigmaKit is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "EnigmaKit"

𝕬𝖚𝖙𝖍𝖔𝖗

Joakim Gyllström, joakim@backslashed.se

𝕷𝖎𝖈𝖊𝖓𝖘𝖊

EnigmaKit is available under the MIT license. See the LICENSE file for more info.

About

Enigma encryption in Swift

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 63.5%
  • Shell 32.6%
  • Objective-C 2.0%
  • Ruby 1.9%