Exemplo n.º 1
0
        public void ConstructTest_ReflectorB()
        {
            string       expectedMapping = "YRUHQSLDPXNGOKMIEBFZCWVJAT";
            RotorFactory factory         = new RotorFactory();
            EnigmaRotor  reflector       = factory.GetReflector(Reflector.B);

            Assert.AreEqual(expectedMapping, reflector.Mapping);
        }
Exemplo n.º 2
0
        public void ConstructTest_ReflectorBThin()
        {
            string       expectedMapping = "ENKQAUYWJICOPBLMDXZVFTHRGS";
            RotorFactory factory         = new RotorFactory();
            EnigmaRotor  reflector       = factory.GetReflector(Reflector.BThin);

            Assert.AreEqual(expectedMapping, reflector.Mapping);
        }
Exemplo n.º 3
0
        public void ConstructTest_ReflectorA()
        {
            string       expectedMapping = "EJMZALYXVBWFCRQUONTSPIKHGD";
            RotorFactory factory         = new RotorFactory();
            EnigmaRotor  reflector       = factory.GetReflector(Reflector.A);

            Assert.AreEqual(expectedMapping, reflector.Mapping);
        }
Exemplo n.º 4
0
        public void ConstructTest_ReflectorCThin()
        {
            string       expectedMapping = "RDOBJNTKVEHMLFCWZAXGYIPSUQ";
            RotorFactory factory         = new RotorFactory();
            EnigmaRotor  reflector       = factory.GetReflector(Reflector.CThin);

            Assert.AreEqual(expectedMapping, reflector.Mapping);
        }
Exemplo n.º 5
0
        public void ConstructTest_ReflectorC()
        {
            string       expectedMapping = "FVPJIAOYEDRZXWGCTKUQSBNMHL";
            RotorFactory factory         = new RotorFactory();
            EnigmaRotor  reflector       = factory.GetReflector(Reflector.C);

            Assert.AreEqual(expectedMapping, reflector.Mapping);
        }
Exemplo n.º 6
0
        public void ConstructTest_RotorIV()
        {
            string       expectedMapping  = "ESOVPZJAYQUIRHXLNFTGKDCMWB";
            char         expectedTurnover = 'J';
            RotorFactory factory          = new RotorFactory();
            EnigmaRotor  result           = factory.GetRotor(Rotor.IV);

            Assert.AreEqual(expectedMapping, result.Mapping);
            result.SetOffset(expectedTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
        }
Exemplo n.º 7
0
        public void ConstructTest_RotorII()
        {
            string       expectedMapping  = "AJDKSIRUXBLHWTMCQGZNPYFVOE";
            char         expectedTurnover = 'E';
            RotorFactory factory          = new RotorFactory();
            EnigmaRotor  result           = factory.GetRotor(Rotor.II);

            Assert.AreEqual(expectedMapping, result.Mapping);
            result.SetOffset(expectedTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
        }
Exemplo n.º 8
0
        public void ConstructTest_RotorIII()
        {
            string       expectedMapping  = "BDFHJLCPRTXVZNYEIWGAKMUSQO";
            char         expectedTurnover = 'V';
            RotorFactory factory          = new RotorFactory();
            EnigmaRotor  result           = factory.GetRotor(Rotor.III);

            Assert.AreEqual(expectedMapping, result.Mapping);
            result.SetOffset(expectedTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
        }
Exemplo n.º 9
0
        public void ConstructTest_RotorV()
        {
            string       expectedMapping  = "VZBRGITYUPSDNHLXAWMJQOFECK";
            char         expectedTurnover = 'Z';
            RotorFactory factory          = new RotorFactory();
            EnigmaRotor  result           = factory.GetRotor(Rotor.V);

            Assert.AreEqual(expectedMapping, result.Mapping);
            result.SetOffset(expectedTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
        }
Exemplo n.º 10
0
        public void ConstructTest_RotorI()
        {
            string       expectedMapping  = "EKMFLGDQVZNTOWYHXUSPAIBRCJ";
            char         expectedTurnover = 'Q';
            RotorFactory factory          = new RotorFactory();
            EnigmaRotor  result           = factory.GetRotor(Rotor.I);

            Assert.AreEqual(expectedMapping, result.Mapping);
            result.SetOffset(expectedTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
        }
Exemplo n.º 11
0
        public void ConstructTest_RotorVI()
        {
            string       expectedMapping = "JPGVOUMFYQBENHZRDKASXLICTW";
            char         firstTurnover   = 'Z';
            char         secondTurnover  = 'M';
            RotorFactory factory         = new RotorFactory();
            EnigmaRotor  result          = factory.GetRotor(Rotor.VI);

            Assert.AreEqual(expectedMapping, result.Mapping);
            result.SetOffset(firstTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
            result.SetOffset(secondTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
        }
Exemplo n.º 12
0
        public void ConstructTest_RotorVII()
        {
            string       expectedMapping = "NZJHGRCXMYSWBOUFAIVLPEKQDT";
            char         firstTurnover   = 'Z';
            char         secondTurnover  = 'M';
            RotorFactory factory         = new RotorFactory();
            EnigmaRotor  result          = factory.GetRotor(Rotor.VII);

            Assert.AreEqual(expectedMapping, result.Mapping);
            result.SetOffset(firstTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
            result.SetOffset(secondTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
        }
Exemplo n.º 13
0
        public void ConstructTest_RotorVIII()
        {
            string       expectedMapping = "FKQHTLXOCBJSPDZRAMEWNIUYGV";
            char         firstTurnover   = 'Z';
            char         secondTurnover  = 'M';
            RotorFactory factory         = new RotorFactory();
            EnigmaRotor  result          = factory.GetRotor(Rotor.VIII);

            Assert.AreEqual(expectedMapping, result.Mapping);
            result.SetOffset(firstTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
            result.SetOffset(secondTurnover);
            Assert.IsTrue(result.IsInTurnoverPosition);
        }
Exemplo n.º 14
0
        public void CanConstructReflector()
        {
            RotorFactory factory = new RotorFactory();

            factory.GetReflector(Reflector.A);
        }
Exemplo n.º 15
0
 public EnigmaFactory()
 {
     _rotorFactory = new RotorFactory();
 }
Exemplo n.º 16
0
        static void Main(string[] args)
        {
            var reflector     = ReflectorFactory.CreateReflectorB();
            var thinReflector = ReflectorFactory.CreateThinReflectorB();

            ThinRotor thinRotor = RotorFactory.CreateRotorBeta();

            Rotor slowRotor   = RotorFactory.CreateRotorI();
            Rotor middleRotor = RotorFactory.CreateRotorII();
            Rotor fastRotor   = RotorFactory.CreateRotorIII();

            var spindle = new Spindle(reflector, slowRotor, middleRotor, fastRotor);

            //var spindle = new Spindle(thinReflector, thinRotor, slowRotor, middleRotor, fastRotor);

            // Ringstellung.
            thinRotor.Offset   = ToI('A');
            slowRotor.Offset   = ToI('A');
            middleRotor.Offset = ToI('A');
            fastRotor.Offset   = ToI('A');

            const char thinRotorPosition   = 'A';
            const char slowRotorPosition   = 'A';
            const char middleRotorPosition = 'A';
            const char fastRotorPosition   = 'A';

            // Initial positions.
            thinRotor.Position   = ToI(thinRotorPosition);
            slowRotor.Position   = ToI(slowRotorPosition);
            middleRotor.Position = ToI(middleRotorPosition);
            fastRotor.Position   = ToI(fastRotorPosition);

            // Note: Enigma can only encrypt/decrypt the 26 letters of the alphabet.
            // (because of this all others: spaces, quotes, commas etc. are ignored)
            string plain = "The quick brown fox jumps over the lazy dog.";

            var plugs = new Dictionary <int, int>
            {
                //{ ToI('A'), ToI('B') },
                //{ ToI('C'), ToI('D') },
                //{ ToI('E'), ToI('F') },
                //{ ToI('G'), ToI('H') },
                //{ ToI('I'), ToI('J') },
                //{ ToI('K'), ToI('L') },
                //{ ToI('M'), ToI('N') },
                //{ ToI('O'), ToI('P') },
                //{ ToI('Q'), ToI('R') },
                //{ ToI('S'), ToI('T') },
                //{ ToI('U'), ToI('V') },
                //{ ToI('W'), ToI('X') },
                //{ ToI('Y'), ToI('Z') },
            };

            var plugboard = new Plugboard(spindle, plugs);

            string encrypted = String.Empty;

            Console.WriteLine("Encrypted:");

            // Encrypt.
            foreach (char c in plain)
            {
                int input = ToI(c);

                if ((input < 0) || (input > 25))
                {
                    // We cannot process this char.
                    continue;
                }

                var output = plugboard.Get(input);

                var ch = Convert.ToChar('A' + output);
                encrypted += ch;
                Console.Write(ch);
                Console.Write(' ');
            }

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Decrypted:");

            // Reset rotor positions.
            thinRotor.Position   = ToI(thinRotorPosition);
            slowRotor.Position   = ToI(slowRotorPosition);
            middleRotor.Position = ToI(middleRotorPosition);
            fastRotor.Position   = ToI(fastRotorPosition);

            // Decrypt.
            foreach (char c in encrypted)
            {
                int input = ToI(c);

                var output = plugboard.Get(input);

                var ch = Convert.ToChar('A' + output);

                Console.Write(ch);
                Console.Write(' ');
            }

            Console.ReadKey();
        }
Exemplo n.º 17
0
        public static EnigmaReflector CreateBReflector()
        {
            RotorFactory factory = new RotorFactory();

            return(factory.GetReflector(Reflector.B) as EnigmaReflector);
        }
Exemplo n.º 18
0
 public void CanConstructRotorFactory()
 {
     RotorFactory factory = new RotorFactory();
 }
Exemplo n.º 19
0
        public void CanConstructRotor()
        {
            RotorFactory factory = new RotorFactory();

            factory.GetRotor(Rotor.I);
        }
Exemplo n.º 20
0
        public static EnigmaRotor CreateRotorIII()
        {
            RotorFactory factory = new RotorFactory();

            return(factory.GetRotor(Rotor.III));
        }