Esempio n. 1
0
        public void Exersise4()
        {
            var cipherTexts = File.ReadAllLines(@"FileForSet1_Exercise4.txt");

            var solution   = new Solution();
            var bestResult = new SolveSingleXORKeyResult();

            foreach (var line in cipherTexts)
            {
                var result = solution.SolveSingleXORKey(line);
                if (result.Score > bestResult.Score)
                {
                    bestResult = result;
                }
            }

            Assert.Equal("Now that the party is jumping\n", bestResult.PlainText);
        }
Esempio n. 2
0
        public SolveSingleXORKeyResult SolveSingleXORKey(IEnumerable <byte> cipherBytes)
        {
            var result = new SolveSingleXORKeyResult();

            for (var key = 1; key < 128; key++)
            {
                var possibleAnswer = cipherBytes
                                     .Select(b => (char)(b ^ key))
                                     .ConcatStrings();
                var numberOfEnglishLetters = possibleAnswer.Count(c => char.IsLetterOrDigit(c) || c == ' ');
                if (numberOfEnglishLetters > result.Score)
                {
                    result.Score     = numberOfEnglishLetters;
                    result.PlainText = possibleAnswer;
                    result.Key       = (char)key;
                }
            }

            return(result);
        }