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()); }
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; }
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()); }