Example #1
0
 public MainWindow()
 {
     InitializeComponent();
     _machine          = new EnigmaMachine();
     _availableLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     _pairs            = new Dictionary <int, Tuple <Button, Button> >();
     _colors           = new Dictionary <int, string>()
     {
         { 0, "#555555" },
         { 1, "#f72338" },
         { 2, "#22f03a" },
         { 3, "#13e8e8" },
         { 4, "#eaff61" },
         { 5, "#b14df0" },
         { 6, "#f7b543" },
         { 7, "#2e990b" },
         { 8, "#7a0006" },
         { 9, "#090269" },
         { 10, "#808a5a" },
         { 11, "#411059" },
         { 12, "#73470a" },
         { 13, "#ff29db" }
     };
     _colorPosition = 1;
 }
        public void Initialize()
        {
            Dictionary <string, string> plugBoard = new Dictionary <string, string>();

            plugBoard.Add("A", "M");
            plugBoard.Add("F", "I");
            plugBoard.Add("N", "V");
            plugBoard.Add("P", "S");
            plugBoard.Add("T", "U");
            plugBoard.Add("W", "Z");

            EnigmaSettings settings = new EnigmaSettings();

            PlugboardBase pb = new PlugboardBase();

            pb.Layout = plugBoard;

            settings.PlugBoard = pb;
            settings.Reflector = Constants.Reflectors.A;

            settings.Rotors.Add(Constants.Rotors.III);
            settings.Rotors.Add(Constants.Rotors.I);
            settings.Rotors.Add(Constants.Rotors.II);

            settings.RotorPositions.Add(Constants.Alpha.L);
            settings.RotorPositions.Add(Constants.Alpha.B);
            settings.RotorPositions.Add(Constants.Alpha.A);

            settings.Rotors[0].Ringstellung = Constants.Alpha.V;
            settings.Rotors[1].Ringstellung = Constants.Alpha.M;
            settings.Rotors[2].Ringstellung = Constants.Alpha.X;

            engimaMachine = new M3(settings);
        }
Example #3
0
        public void GetSetRotorSettings()
        {
            string         expected = "ABC";
            IEnigmaMachine enigma   = BuildEnigma();

            enigma.SetRotorOffset(expected);
            string actual = enigma.GetRotorSettings();

            Assert.AreEqual(expected, actual);
        }
Example #4
0
        public void LongCryptOverDoubleStep()
        {
            string         expectedCryptText = "LNTOXWXEPYMHXCTALPRBBRGRAWKQJGKHLXLATLFQPCHEESJTBCKEUKKXCUCPIUTUZZBECEOSVIOVQCWTOACQRNAJKBBESCWPMHAPZKVUDZGBWTUGDUEQCTWFXSOBLTEDEOESBXIJYBPJSRXELEAFUPEFPBOFAPIIUZXLGABEZNHTPFNTMLSQTTYGUSFIODXFIESMAALYHJBDPXFPGVZTTAQJGZPIWNOKHBJXLZXZ";
            string         plaintext         = "vonvonjlooksjhffttteinseinsdreizwoyyqnnsneuninhaltxxbeiangriffunterwassergedruecktywabosxletztergegnerstandnulachtdreinuluhrmarquantonjotaneunachtseyhsdreiyzwozwonulgradyachtsmystossenachxeknsviermbfaelltynnnnnnooovierysichteinsnull";
            IEnigmaMachine enigma            = BuildEnigma();

            enigma.SetRotorOffset("ADU");
            string actualCryptText = enigma.Crypt(plaintext);

            Assert.AreEqual(expectedCryptText, actualCryptText);
        }
Example #5
0
        public void SimpleCryptNotOverDoubleStep()
        {
            string         plainText = "RBMLWDESXRUEPIWEDYLDZUKTTXGGKHLTFHKXLXFDJDMMI";
            string         cryptText = "MAYBEINVADINGRUSSIAINTHEWINTERWASNOTAGOODIDEA";
            IEnigmaMachine enigma    = BuildEnigma();

            enigma.SetRotorOffset("AAZ");
            string actual = enigma.Crypt(plainText);

            Assert.AreEqual(cryptText, actual);
        }
Example #6
0
        public void SimpleCryptOverDoubleStep()
        {
            string         plainText = "IHEARTHEWEATHERINARGENTINAISNICETHISTIMEOFYEAR";
            string         cryptText = "UFSMHLYCAOFPCYDSBBVHLMNAWBXTSKANKGLZGBHIHAXIRU";
            IEnigmaMachine enigma    = BuildEnigma();

            enigma.SetRotorOffset("ADV");
            string actual = enigma.Crypt(plainText);

            Assert.AreEqual(cryptText, actual);
        }
        private static char EncryptLetter(this IEnigmaMachine machine, char letter)
        {
            if (!char.IsLetter(letter))
            {
                return(letter);
            }

            bool isLower = char.IsLower(letter);

            letter = machine.PressKey(char.ToUpperInvariant(letter));
            letter = isLower ? char.ToLowerInvariant(letter) : letter;

            return(letter);
        }
Example #8
0
        public void Initialize()
        {
            EnigmaSettings settings = new EnigmaSettings();

            settings.Rotors.Add(Constants.Rotors.II);
            settings.Rotors.Add(Constants.Rotors.I);
            settings.Rotors.Add(Constants.Rotors.III);

            settings.RotorPositions.Add(16);
            settings.RotorPositions.Add(17);
            settings.RotorPositions.Add(26);

            settings.Reflector = Constants.Reflectors.A;

            engimaMachine = new KRailway(settings);
        }
Example #9
0
        public void Initialize()
        {
            Dictionary <string, string> plugBoard = new Dictionary <string, string>();

            plugBoard.Add("A", "T");
            plugBoard.Add("B", "L");
            plugBoard.Add("D", "F");
            plugBoard.Add("G", "J");
            plugBoard.Add("H", "M");
            plugBoard.Add("N", "W");
            plugBoard.Add("O", "P");
            plugBoard.Add("Q", "Y");
            plugBoard.Add("R", "Z");
            plugBoard.Add("V", "X");

            EnigmaSettings settings = new EnigmaSettings();

            PlugboardBase pb = new PlugboardBase();

            pb.Layout = plugBoard;

            settings.PlugBoard = pb;

            //settings.Rotors.Add(new Rotor("EKMFLGDQVZNTOWYHXUSPAIBRCJ", "I", new List<string>() { "Y" }, new List<string>() { "Q" }, new List<string>() { "R" }));
            //settings.Rotors.Add(new Rotor("ESOVPZJAYQUIRHXLNFTGKDCMWB", "IV", new List<string>() { "R" }, new List<string>() { "J" }, new List<string>() { "K" }));
            //settings.Rotors.Add(new Rotor("AJDKSIRUXBLHWTMCQGZNPYFVOE", "II", new List<string>() { "M" }, new List<string>() { "E" }, new List<string>() { "F" }));
            //settings.Rotors.Add(new Rotor("LEYJVCNIXWPBQMDRTAKZGFUHOS", "Beta", null, null, null));

            settings.Rotors.Add(Constants.Rotors.I);
            settings.Rotors.Add(Constants.Rotors.IV);
            settings.Rotors.Add(Constants.Rotors.II);
            settings.Rotors.Add(Constants.Rotors.Beta);

            settings.RotorPositions.Add(Constants.Alpha.A);
            settings.RotorPositions.Add(Constants.Alpha.N);
            settings.RotorPositions.Add(Constants.Alpha.J);
            settings.RotorPositions.Add(Constants.Alpha.V);

            settings.Rotors[0].Ringstellung = Constants.Alpha.V;
            settings.Rotors[1].Ringstellung = Constants.Alpha.A;
            settings.Rotors[2].Ringstellung = Constants.Alpha.A;
            settings.Rotors[3].Ringstellung = Constants.Alpha.A;

            settings.Reflector = Constants.Reflectors.BThin;

            engimaMachine = new M4(settings);
        }
Example #10
0
        public void Initialize()
        {
            Dictionary <string, string> plugBoard = new Dictionary <string, string>();

            plugBoard.Add("A", "X");
            plugBoard.Add("B", "K");
            plugBoard.Add("D", "E");
            plugBoard.Add("G", "J");
            plugBoard.Add("H", "M");
            plugBoard.Add("N", "W");
            plugBoard.Add("O", "P");
            plugBoard.Add("Q", "Y");
            plugBoard.Add("R", "Z");
            plugBoard.Add("V", "T");

            EnigmaSettings settings = new EnigmaSettings();

            PlugboardBase pb = new PlugboardBase();

            pb.Layout = plugBoard;

            settings.PlugBoard = pb;

            settings.Rotors.Add(Constants.Rotors.II);
            settings.Rotors.Add(Constants.Rotors.IV);
            settings.Rotors.Add(Constants.Rotors.III);
            settings.Rotors.Add(Constants.Rotors.Beta);

            settings.RotorPositions.Add(Constants.Alpha.S);
            settings.RotorPositions.Add(Constants.Alpha.S);
            settings.RotorPositions.Add(Constants.Alpha.O);
            settings.RotorPositions.Add(Constants.Alpha.B);

            settings.Rotors[0].Ringstellung = Constants.Alpha.G;
            settings.Rotors[1].Ringstellung = Constants.Alpha.C;
            settings.Rotors[2].Ringstellung = Constants.Alpha.C;
            settings.Rotors[3].Ringstellung = Constants.Alpha.A;

            settings.Reflector = Constants.Reflectors.CThin;

            engimaMachine = new M4(settings);
        }
Example #11
0
        public void Initialize()
        {
            Dictionary <string, string> plugBoard = new Dictionary <string, string>();

            plugBoard.Add("A", "E");
            plugBoard.Add("B", "F");
            plugBoard.Add("C", "M");
            plugBoard.Add("D", "Q");
            plugBoard.Add("H", "U");
            plugBoard.Add("J", "N");
            plugBoard.Add("L", "X");
            plugBoard.Add("P", "R");
            plugBoard.Add("S", "Z");
            plugBoard.Add("V", "W");

            EnigmaSettings settings = new EnigmaSettings();

            PlugboardBase pb = new PlugboardBase();

            pb.Layout = plugBoard;

            settings.PlugBoard = pb;

            settings.Rotors.Add(Constants.Rotors.VIII);
            settings.Rotors.Add(Constants.Rotors.VI);
            settings.Rotors.Add(Constants.Rotors.V);
            settings.Rotors.Add(Constants.Rotors.Beta);

            settings.RotorPositions.Add(Constants.Alpha.Z);
            settings.RotorPositions.Add(Constants.Alpha.S);
            settings.RotorPositions.Add(Constants.Alpha.D);
            settings.RotorPositions.Add(Constants.Alpha.C);

            settings.Rotors[0].Ringstellung = Constants.Alpha.L;
            settings.Rotors[1].Ringstellung = Constants.Alpha.E;
            settings.Rotors[2].Ringstellung = Constants.Alpha.P;
            settings.Rotors[3].Ringstellung = Constants.Alpha.E;

            settings.Reflector = Constants.Reflectors.CThin;

            engimaMachine = new M4(settings);
        }
Example #12
0
        public void Initialize()
        {
            Dictionary <string, string> plugBoard = new Dictionary <string, string>();

            plugBoard.Add("A", "Y");
            plugBoard.Add("B", "F");
            plugBoard.Add("D", "L");
            plugBoard.Add("G", "X");
            plugBoard.Add("H", "Z");
            plugBoard.Add("N", "S");
            plugBoard.Add("O", "C");
            plugBoard.Add("Q", "T");
            plugBoard.Add("R", "J");
            plugBoard.Add("V", "P");

            EnigmaSettings settings = new EnigmaSettings();

            PlugboardBase pb = new PlugboardBase();

            pb.Layout = plugBoard;

            settings.PlugBoard = pb;

            settings.Rotors.Add(Constants.Rotors.III);
            settings.Rotors.Add(Constants.Rotors.I);
            settings.Rotors.Add(Constants.Rotors.V);
            settings.Rotors.Add(Constants.Rotors.Gamma);

            settings.RotorPositions.Add(Constants.Alpha.E);
            settings.RotorPositions.Add(Constants.Alpha.D);
            settings.RotorPositions.Add(Constants.Alpha.O);
            settings.RotorPositions.Add(Constants.Alpha.C);

            settings.Rotors[0].Ringstellung = Constants.Alpha.P;
            settings.Rotors[1].Ringstellung = Constants.Alpha.M;
            settings.Rotors[2].Ringstellung = Constants.Alpha.I;
            settings.Rotors[3].Ringstellung = Constants.Alpha.P;

            settings.Reflector = Constants.Reflectors.CThin;

            engimaMachine = new M4(settings);
        }
Example #13
0
        public void Initialize()
        {
            Dictionary <string, string> plugBoard = new Dictionary <string, string>();

            plugBoard.Add("A", "N");
            plugBoard.Add("E", "Z");
            plugBoard.Add("H", "K");
            plugBoard.Add("I", "J");
            plugBoard.Add("L", "R");
            plugBoard.Add("M", "Q");
            plugBoard.Add("O", "T");
            plugBoard.Add("P", "V");
            plugBoard.Add("S", "W");
            plugBoard.Add("U", "X");

            EnigmaSettings settings = new EnigmaSettings();

            PlugboardBase pb = new PlugboardBase();

            pb.Layout = plugBoard;

            settings.PlugBoard  = pb;
            settings.Reflector  = Constants.Reflectors.B;
            settings.EntryWheel = Constants.Rotors.Etw;

            settings.Rotors.Add(Constants.Rotors.VIII);
            settings.Rotors.Add(Constants.Rotors.VI);
            settings.Rotors.Add(Constants.Rotors.III);

            settings.Rotors[0].Ringstellung = Constants.Alpha.M;
            settings.Rotors[1].Ringstellung = Constants.Alpha.H;
            settings.Rotors[2].Ringstellung = Constants.Alpha.A;

            settings.RotorPositions.Add(Constants.Alpha.V);
            settings.RotorPositions.Add(Constants.Alpha.Z);
            settings.RotorPositions.Add(Constants.Alpha.U);

            engimaMachine = new M3(settings);
        }
Example #14
0
        public void Initialize()
        {
            Dictionary <string, string> plugBoard = new Dictionary <string, string>();

            plugBoard.Add("A", "V");
            plugBoard.Add("B", "S");
            plugBoard.Add("C", "G");
            plugBoard.Add("D", "L");
            plugBoard.Add("F", "U");
            plugBoard.Add("H", "Z");
            plugBoard.Add("I", "N");
            plugBoard.Add("K", "M");
            plugBoard.Add("O", "W");
            plugBoard.Add("R", "X");

            EnigmaSettings settings = new EnigmaSettings();

            PlugboardBase pb = new PlugboardBase();

            pb.Layout = plugBoard;

            settings.PlugBoard = pb;
            settings.Reflector = Constants.Reflectors.B;

            settings.Rotors.Add(Constants.Rotors.V);
            settings.Rotors.Add(Constants.Rotors.IV);
            settings.Rotors.Add(Constants.Rotors.II);

            settings.RotorPositions.Add(Constants.Alpha.A);
            settings.RotorPositions.Add(Constants.Alpha.L);
            settings.RotorPositions.Add(Constants.Alpha.B);

            settings.Rotors[0].Ringstellung = Constants.Alpha.L;
            settings.Rotors[1].Ringstellung = Constants.Alpha.U;
            settings.Rotors[2].Ringstellung = Constants.Alpha.B;

            engimaMachine = new M3(settings);
        }
Example #15
0
        public void CanCrypt()
        {
            IEnigmaMachine enigma = BuildEnigma();

            enigma.Crypt("Test");
        }
Example #16
0
        public void CanSetRotorOffset()
        {
            IEnigmaMachine enigma = BuildEnigma();

            enigma.SetRotorOffset("AAA");
        }
Example #17
0
 public void SetUp()
 {
     _machine = new EnigmaMachine();
     _args    = new List <MachineArgs>()
     {
         new MachineArgs {
             RotorOneArgs = new RotorArgs
             {
                 Number        = RotorNumber.One,
                 StartPosition = 0
             },
             RotorTwoArgs = new RotorArgs
             {
                 Number        = RotorNumber.Two,
                 StartPosition = 5
             },
             RotorThreeArgs = new RotorArgs
             {
                 Number        = RotorNumber.Three,
                 StartPosition = 15
             },
             LettersToSwap = new List <Tuple <char, char> >()
         },
         new MachineArgs
         {
             RotorOneArgs = new RotorArgs
             {
                 Number        = RotorNumber.Five,
                 StartPosition = 6
             },
             RotorTwoArgs = new RotorArgs
             {
                 Number        = RotorNumber.Four,
                 StartPosition = 9
             },
             RotorThreeArgs = new RotorArgs
             {
                 Number        = RotorNumber.Three,
                 StartPosition = 1
             },
             LettersToSwap = new List <Tuple <char, char> >()
             {
                 new Tuple <char, char>('A', 'E'),
                 new Tuple <char, char>('G', 'K')
             }
         },
         new MachineArgs
         {
             RotorOneArgs = new RotorArgs
             {
                 Number        = RotorNumber.Four,
                 StartPosition = 14
             },
             RotorTwoArgs = new RotorArgs
             {
                 Number        = RotorNumber.Two,
                 StartPosition = 24
             },
             RotorThreeArgs = new RotorArgs
             {
                 Number        = RotorNumber.Four,
                 StartPosition = 17
             },
             LettersToSwap = new List <Tuple <char, char> >()
             {
                 new Tuple <char, char>('C', 'F'),
                 new Tuple <char, char>('E', 'T'),
                 new Tuple <char, char>('P', 'L')
             }
         }
     };
 }
Example #18
0
        public void CanGetRotorSettings()
        {
            IEnigmaMachine enigma = BuildEnigma();

            enigma.GetRotorSettings();
        }
Example #19
0
 public EnigmaEncoder(IEnigmaMachine enigmaMachine)
 {
     _enigmaMachine = enigmaMachine;
 }
Example #20
0
 public void CanConstructEnigmaM4()
 {
     EnigmaFactory  factory = new EnigmaFactory();
     IEnigmaMachine enigma  = factory.GetEnigmaM4(Reflector.BThin, new Rotor[] { Rotor.I, Rotor.I, Rotor.III, Rotor.Beta });
 }
 public static void SetupPlugboard(this IEnigmaMachine machine, IEnumerable <char> mappings)
 {
     machine.SetupPlugboard(new string(mappings.ToArray()));
 }
Example #22
0
 public void Cleanup()
 {
     engimaMachine = null;
 }
 public static string Encrypt(this IEnigmaMachine machine, string text)
 {
     return(new string(text.ToCharArray().Select(machine.EncryptLetter).ToArray()));
 }