Ejemplo n.º 1
0
        /// <summary>
        /// Provede útok testováním všech dostupných klíčů 
        /// a následně vybere nejpravděpodobnější variantu.
        /// </summary>
        /// <param name="packet"></param>
        /// <returns></returns>
        public List<string> BruteForceAttack(string ciphertext, Storage.Languages language)
        {
            Dictionary<char, double> probability = new Dictionary<char, double>();
            Caesar caesar = new Caesar();
            string opentext;

            Analyse.DoAlphabet(letter =>
            {
                opentext = caesar.Decrypt(ciphertext, letter.ToString());
                probability[letter] = Analyse.SimilarityIndex(Analyse.NormalizeText(opentext, Analyse.TextTypes.WithoutSpacesLower), Storage.GetLangChar(language));
            });

            var resultPacket = probability.OrderBy(x => x.Value).ToArray()[0].Key;

            return new List<string>() { resultPacket.ToString() };
        }