Exemple #1
0
        private RotorNumber GetRotorNumber(string number)
        {
            RotorNumber result = RotorNumber.One;

            switch (number)
            {
            case "I":
                result = RotorNumber.One;
                break;

            case "II":
                result = RotorNumber.Two;
                break;

            case "III":
                result = RotorNumber.Three;
                break;

            case "IV":
                result = RotorNumber.Four;
                break;

            case "V":
                result = RotorNumber.Five;
                break;
            }
            return(result);
        }
Exemple #2
0
        public void EncodeBackTest(RotorNumber number, byte position, char characterToEncode, char result)
        {
            SpinningRotor rotor = new SpinningRotor(number, position);

            rotor.EncodeCharacterBack(ref characterToEncode);
            Assert.AreEqual(result, characterToEncode);
        }
        public void SetConfiguration(RotorNumber number, byte position)
        {
            if (position > 25)
            {
                throw new ForbiddenParameterValueException();
            }
            switch (number)
            {
            case RotorNumber.One:
                letters   = "EKMFLGDQVZNTOWYHXUSPAIBRCJ";
                SpinPoint = 'R';
                break;

            case RotorNumber.Two:
                letters   = "AJDKSIRUXBLHWTMCQGZNPYFVOE";
                SpinPoint = 'F';
                break;

            case RotorNumber.Three:
                letters   = "BDFHJLCPRTXVZNYEIWGAKMUSQO";
                SpinPoint = 'W';
                break;

            case RotorNumber.Four:
                letters   = "ESOVPZJAYQUIRHXLNFTGKDCMWB";
                SpinPoint = 'K';
                break;

            case RotorNumber.Five:
                letters   = "VZBRGITYUPSDNHLXAWMJQOFECK";
                SpinPoint = 'A';
                break;
            }
            CurrentPosition = position;
        }
        public void BuildRotor(RotorNumber number, int notchPosition)
        {
            var configuration = DotNetEnigmaConfiguration.RotorWiringConfiguration
                                .EnigmaMachines.FirstOrDefault()
                                .WiringConfigurations.FirstOrDefault(x => x.Rotor == number);
            var newRotor = new Rotor(notchPosition, configuration.Rotor, configuration.Configuration);

            _instance.RotorSeries.Enqueue(newRotor);
        }
        /// <summary>
        /// Chooses the rotors for your enigma machines
        /// </summary>
        public void ChooseRotors(RotorNumber rotor1, RotorNumber rotor2, RotorNumber rotor3)
        {
            switch (rotor3)
            {
            case RotorNumber.Rotor1:
                this._rotor3 = new Rotor(rotorI, true, rotorITurnover);
                break;

            case RotorNumber.Rotor2:
                this._rotor3 = new Rotor(rotorII, true, rotorIITurnover);
                break;

            case RotorNumber.Rotor3:
                this._rotor3 = new Rotor(rotorIII, true, rotorIIITurnover);
                break;

            case RotorNumber.Rotor4:
                this._rotor3 = new Rotor(rotorIV, true, rotorIVTurnover);
                break;

            case RotorNumber.Rotor5:
                this._rotor3 = new Rotor(rotorV, true, rotorVTurnover);
                break;

            default:
                throw new IndexOutOfRangeException($"{rotor3} is not a valid rotor");
            }

            switch (rotor2)
            {
            case RotorNumber.Rotor1:
                this._rotor2 = new Rotor(rotorI, false, rotorITurnover);
                break;

            case RotorNumber.Rotor2:
                this._rotor2 = new Rotor(rotorII, false, rotorIITurnover);
                break;

            case RotorNumber.Rotor3:
                this._rotor2 = new Rotor(rotorIII, false, rotorIIITurnover);
                break;

            case RotorNumber.Rotor4:
                this._rotor2 = new Rotor(rotorIV, false, rotorIVTurnover);
                break;

            case RotorNumber.Rotor5:
                this._rotor2 = new Rotor(rotorV, false, rotorVTurnover);
                break;

            default:
                throw new IndexOutOfRangeException($"{rotor2} is not a valid rotor");
            }

            switch (rotor1)
            {
            case RotorNumber.Rotor1:
                this._rotor1 = new Rotor(rotorI, false, rotorITurnover);
                break;

            case RotorNumber.Rotor2:
                this._rotor1 = new Rotor(rotorII, false, rotorIITurnover);
                break;

            case RotorNumber.Rotor3:
                this._rotor1 = new Rotor(rotorIII, false, rotorIIITurnover);
                break;

            case RotorNumber.Rotor4:
                this._rotor1 = new Rotor(rotorIV, false, rotorIVTurnover);
                break;

            case RotorNumber.Rotor5:
                this._rotor1 = new Rotor(rotorV, false, rotorVTurnover);
                break;

            default:
                throw new IndexOutOfRangeException($"{rotor1} is not a valid rotor");
            }

            this._rotor3.AdvanceAdjacentRotor += this._rotor2.RotateHandler;
            this._rotor2.AdvanceAdjacentRotor += this._rotor1.RotateHandler;
        }
Exemple #6
0
 public RotorStepEventArgs(RotorNumber number)
 {
     RotorNumber = number;
 }
 public SpinningRotor(RotorNumber number, byte position)
 {
     SetConfiguration(number, position);
 }