Ejemplo n.º 1
0
        public static void Main(string[] args)
        {
            //TestMatrixG();
            //TestMatrixH();
            //TestDecodingOfCorruptedVectors();

            // G = 1 0 1 1 0
            //     0 1 0 1 1
            var matrix = new int[2][];

            matrix[0] = new int[5] {
                1, 0, 1, 1, 0
            };
            matrix[1] = new int[5] {
                0, 1, 0, 1, 1
            };

            var enigma = new Enigma(
                length: matrix[0].GetUpperBound(0) + 1,
                dimension: matrix.GetUpperBound(0) + 1,
                matrixG: matrix);

            var channel = new Channel(0.5);


            var messageToEncode = new int[2] {
                0, 0
            };
            var encoded   = enigma.Encode(messageToEncode);
            var corrupted = channel.SendVectorThrough(encoded);
            var positions = enigma.FindChangedPositions(encoded, corrupted);
            var result    = enigma.Decode(corrupted);

            Console.ReadKey();
        }
Ejemplo n.º 2
0
        public void Simulate()
        {
            var operation = Console.ReadLine();
            var seed      = int.Parse(Console.ReadLine());

            var enigma = new Enigma(
                new Enigma.Rotor(Console.ReadLine()),
                new Enigma.Rotor(Console.ReadLine()),
                new Enigma.Rotor(Console.ReadLine())
                );

            var message = Console.ReadLine();

            var res = operation == "ENCODE"
                ? enigma.Encode(message, seed)
                : enigma.Decode(message, seed);

            Console.WriteLine(res);
        }