Пример #1
0
        static void Main(string[] args)
        {
            string cryptFilePath = args[0];
            Console.WriteLine("Crypt file path: {0}", cryptFilePath);

            string cryptFileContent = File.ReadAllText(cryptFilePath).ToLower();

            string cryptText = Resource.cryptoText;

            FrequencyCharInfo publicCharInfo = new FrequencyCharInfo();
            StatisticCharInfo customerStatisticInfo = new StatisticCharInfo();
            customerStatisticInfo.ProcessCryptData(cryptFileContent);
            customerStatisticInfo.WriteToConsole();
            FrequencyCharInfo customerCharInfo = customerStatisticInfo.CreateFrequencyCharInfo();

            // n -> a
            // nc, nx -> am, an, as, at
            // xzr -> the

            // ? ncf --> and or any
            // ? ur --> be

            SubstitutionEngine substitutionEngine = new SubstitutionEngine(publicCharInfo, customerCharInfo);
            substitutionEngine.AddPair('n', 'a');
            substitutionEngine.AddPair('j', 'o');

//            substitutionEngine.AddPair('x', 't');            
//            substitutionEngine.AddPair('r', 'e');
//            substitutionEngine.AddPair('z', 'h');
//            substitutionEngine.AddPair('f', 'd');

            substitutionEngine.AddPair("xzryr nyr", "there are");
            substitutionEngine.AddPair("fqeeryrcx", "different");
            substitutionEngine.AddPair("rcojfqcm", "encoding");
            substitutionEngine.AddPair("cvhury", "number");
            substitutionEngine.AddPair("xpbrw", "types");
            substitutionEngine.AddPair("aqxz", "with");
            substitutionEngine.AddPair("wrtrynl", "several");
            substitutionEngine.AddPair("blnqcxrgx", "plaintext");
            substitutionEngine.AddPair("wrsvrcor", "sequence");

            Dictionary<char, char> substitution = substitutionEngine.CreateSubstitution();

            foreach (KeyValuePair<char, char> keyValuePair in substitution)
            {
                Console.WriteLine("{0} ({1:N}) --> {2} ({3:N})", 
                    keyValuePair.Key, customerStatisticInfo.CustomerCharsFrequency[keyValuePair.Key].Frequency,
                    keyValuePair.Value, publicCharInfo.PublicCharsFrequency[keyValuePair.Value]);
            }
            Console.WriteLine();
            Console.WriteLine("Decoded text:");

            StringBuilder plainText = new StringBuilder();
            foreach (char c in cryptFileContent)
            {
                plainText.Append(substitution.ContainsKey(c) ? substitution[c] : c);
            }

            Console.WriteLine(plainText.ToString());
        }
Пример #2
0
 public static SubstitutionEngine GetSubstitutionEngine(string title, string content)
 {
     SubstitutionEngine result = new SubstitutionEngine();
     Bijou.Breadcrumb = NavUtils.BuildBreadcrumb();
     DateTime now = DateTime.Now;
     result.Add("content", content);
     result.Add("title", title);
     result.Add("root", BijouUtils.BuildRootPath(Bijou.Level));
     result.Add("topnav", Bijou.TopNav);
     result.Add("breadcrumb", Bijou.Breadcrumb);
     result.Add("children", Bijou.Children);
     result.Add("url", Bijou.CurrentPageUrl);
     result.Add("date", string.Format("{0:yyyy/MM/dd}", now ));
     result.Add("time", string.Format("{0:hh}:{1:mm}", now, now ));
     result.Add("gmt", string.Format("{0:yyyyMMdd}T{1:hhmmss}Z", now, now));
     return result;
 }
Пример #3
0
        static void Main(string[] args)
        {
            string cryptFilePath = args[0];

            Console.WriteLine("Crypt file path: {0}", cryptFilePath);

            string cryptFileContent = File.ReadAllText(cryptFilePath).ToLower();

            string cryptText = Resource.cryptoText;

            FrequencyCharInfo publicCharInfo        = new FrequencyCharInfo();
            StatisticCharInfo customerStatisticInfo = new StatisticCharInfo();

            customerStatisticInfo.ProcessCryptData(cryptFileContent);
            customerStatisticInfo.WriteToConsole();
            FrequencyCharInfo customerCharInfo = customerStatisticInfo.CreateFrequencyCharInfo();

            // n -> a
            // nc, nx -> am, an, as, at
            // xzr -> the

            // ? ncf --> and or any
            // ? ur --> be

            SubstitutionEngine substitutionEngine = new SubstitutionEngine(publicCharInfo, customerCharInfo);

            substitutionEngine.AddPair('n', 'a');
            substitutionEngine.AddPair('j', 'o');

//            substitutionEngine.AddPair('x', 't');
//            substitutionEngine.AddPair('r', 'e');
//            substitutionEngine.AddPair('z', 'h');
//            substitutionEngine.AddPair('f', 'd');

            substitutionEngine.AddPair("xzryr nyr", "there are");
            substitutionEngine.AddPair("fqeeryrcx", "different");
            substitutionEngine.AddPair("rcojfqcm", "encoding");
            substitutionEngine.AddPair("cvhury", "number");
            substitutionEngine.AddPair("xpbrw", "types");
            substitutionEngine.AddPair("aqxz", "with");
            substitutionEngine.AddPair("wrtrynl", "several");
            substitutionEngine.AddPair("blnqcxrgx", "plaintext");
            substitutionEngine.AddPair("wrsvrcor", "sequence");

            Dictionary <char, char> substitution = substitutionEngine.CreateSubstitution();

            foreach (KeyValuePair <char, char> keyValuePair in substitution)
            {
                Console.WriteLine("{0} ({1:N}) --> {2} ({3:N})",
                                  keyValuePair.Key, customerStatisticInfo.CustomerCharsFrequency[keyValuePair.Key].Frequency,
                                  keyValuePair.Value, publicCharInfo.PublicCharsFrequency[keyValuePair.Value]);
            }
            Console.WriteLine();
            Console.WriteLine("Decoded text:");

            StringBuilder plainText = new StringBuilder();

            foreach (char c in cryptFileContent)
            {
                plainText.Append(substitution.ContainsKey(c) ? substitution[c] : c);
            }

            Console.WriteLine(plainText.ToString());
        }