Exemple #1
0
        public virtual ActionResult Enigma()
        {
            var model = new EnigmaModel();

            PrepareEnigmaModel(model);
            return(View(model));
        }
        public EnigmaModel Decripter(EnigmaModel enigma)
        {
            var enigmaArray = enigma.Cifrado.ToLower().ToCharArray();

            int           variacao = (-1) * enigma.NumeroCasas;
            StringBuilder result   = new StringBuilder();

            // 97 ~> a até z <~ 122
            foreach (var character in enigmaArray)
            {
                int ascii = (int)character;

                if (ascii >= 97 && ascii <= 122) // caracteres que me interessam
                {
                    // b ~> 98 + (-3) = 95 ~> true
                    if (ascii + variacao < 97) // variacao negativa
                    {
                        // teremos (95 - 97) + 123 = 121
                        var caracterNegativo = ((ascii + variacao) - 97) + 123;
                        //Console.Write((char)caracterNegativo); // temos o y
                        result.Append((char)caracterNegativo);
                    }
                    // y ~> 121 + (+3) = 124 ~> true
                    else if (ascii + variacao > 122) // variação positiva
                    {
                        // teremos (124 - 122) + 96 = 98
                        var caracterPositivo = ((ascii + variacao) - 122) + 96;
                        //Console.Write((char)caracterPositivo); // temos o b
                        result.Append((char)caracterPositivo);
                    }
                    else // variação não viola negativamente e nem positivamente
                    {
                        //Console.Write((char)(ascii + variacao));
                        result.Append((char)(ascii + variacao));
                    }
                }
                else // caracteres que não me intreressam a conversão
                {
                    //Console.Write((char)ascii);
                    result.Append((char)ascii);
                }
            }

            var sha1 = new Sha1Generator();

            var enigmaDecrypted     = result.ToString();
            var resumoCriptografico = sha1.Hash(enigmaDecrypted);

            return(new EnigmaModel()
            {
                Cifrado = enigma.Cifrado,
                Decifrado = enigmaDecrypted,
                NumeroCasas = enigma.NumeroCasas,
                Token = enigma.Token,
                ResumoCriptografico = resumoCriptografico
            });
        }
Exemple #3
0
        public ActionResult Index()
        {
            enigmaGame.StartGame();

            var enigmaResult = new EnigmaModel(false, enigmaGame.GetFlag(), false, enigmaGame.CurrentNumberOfTries,
                                               enigmaGame.Tries);

            return(View(enigmaResult));
        }
Exemple #4
0
        public PartialViewResult Answer(EnigmaColor[] answer)
        {
            if (!answer.All(color => Enum.IsDefined(typeof(EnigmaColor), color)))
            {
                throw new ArgumentException("Answer is outside of possible values.");
            }

            enigmaGame.GuessColors(answer);

            var enigmaResult = new EnigmaModel(enigmaGame.IsWon, enigmaGame.GetFlag(), false,
                                               enigmaGame.CurrentNumberOfTries,
                                               enigmaGame.Tries);

            return(PartialView("_EnigmaGame", enigmaResult));
        }
Exemple #5
0
 public virtual ActionResult Enigma(EnigmaModel model)
 {
     PrepareEnigmaModel(model);
     if (ModelState.IsValid)
     {
         var rotors = new List <Rotor>
         {
             Rotor.GetByCode(model.SelectedRotor1, model.StartingLetter1),
             Rotor.GetByCode(model.SelectedRotor2, model.StartingLetter2),
             Rotor.GetByCode(model.SelectedRotor3, model.StartingLetter3),
         };
         var enigmaCore = new EnigmaCore(Reflector.UKWB(), rotors.ToArray());
         model.Result = enigmaCore.Encode(model.Text, model.MoveRotor);
     }
     return(View(model));
 }
Exemple #6
0
 private void PrepareEnigmaModel(EnigmaModel model)
 {
     model.AvailableRotors = SelectListItemHelper.GetRotors();
 }