static void Main(string[] args) { start: string path; string[] enc; if (args.Length < 1) { return; } else { path = args[0]; } if (File.Exists(path)) { enc = File.ReadAllLines(path); } else { Console.WriteLine("File does not exist."); return; } Console.Clear(); Console.WriteLine(">>brypt v0.1<<"); Console.WriteLine("\n选择 1.简单恺撒密码遍历器 2.字频统计 3.字频统计+预处理 4.自定义替换"); int mode = Convert.ToInt32(Console.ReadLine()); if (mode == 1) { for (int i = 0; i < 24; i++) { for (int line = 0; line < enc.Length; line++) { string txt = enc[line]; Cheaser cheaser = new Cheaser(i + 1); Console.WriteLine("\n" + cheaser.Decrypt(txt) + "\n"); } Console.ReadKey(); } Console.WriteLine("\n遍历结束"); goto start; } if (mode == 2) { for (int i = 0; i < 26; i++) { freq[i] = 0; } for (int line = 0; line < enc.Length; line++) { string txt = enc[line]; for (int i = 0; i < txt.Length; i++) { char chr = txt[i]; freq[GetPosition(chr)]++; } } for (int i = 0; i < 26; i++) { Console.WriteLine("[" + alphabet[i] + "] ---- [" + freq[i] + "]"); } Console.ReadLine(); goto start; } if (mode == 3) { List <Wn> wns = new List <Wn>(26); string pre = ""; for (int i = 0; i < 26; i++) { freq[i] = 0; } for (int line = 0; line < enc.Length; line++) { string txt = enc[line]; for (int i = 0; i < txt.Length; i++) { int index = GetPosition(txt[i]); if (index == -1) { continue; } else { freq[index]++; } } } for (int i = 0; i < 26; i++) { wns.Add(new Wn(freq[i], alphabet[i])); } wns.Sort(); char[] freqRank = new char[26]; for (int i = 0; i < 26; i++) { Console.WriteLine("[" + wns[i].chr + "] ---- [" + wns[i].freq + "] ---- [" + freqStd[i] + "]"); freqRank[i] = wns[i].chr; } File.WriteAllText("freq.txt", new string(freqRank) + "\r\n" + new string(freqStd)); Console.WriteLine("\n"); //string[] pre = new string[enc.Length]; for (int line = 0; line < enc.Length; line++) { char[] txt = enc[line].ToCharArray(); for (int i = 0; i < txt.Length; i++) { txt[i] = Map(txt[i], freqRank, freqStd); } pre += new string(txt) + "\r\n"; } Console.WriteLine(pre); File.WriteAllText("pre.txt", pre); Console.ReadKey(); goto start; } if (mode == 4) { string[] src = File.ReadAllLines("custom.txt"); string pre = ""; for (int line = 0; line < enc.Length; line++) { char[] txt = enc[line].ToCharArray(); for (int i = 0; i < txt.Length; i++) { txt[i] = Map(txt[i], src[0].ToCharArray(), src[1].ToCharArray()); } pre += new string(txt) + "\r\n"; } Console.WriteLine(pre); File.WriteAllText("pre.txt", pre); Console.ReadKey(); goto start; } }
static void Main(string[] args) { start: try { Console.Clear(); Console.WriteLine("选择 1.恺撒密码 2.眼花密码 3.CBC恺撒密码 4.CTR恺撒密码:"); int mode = Convert.ToInt32(Console.ReadLine()); if (mode == 1) { WriteLine(">>恺撒密码<<", "y"); Console.WriteLine("\n选择:1.简单密钥 2.长密钥"); mode = Convert.ToInt32(Console.ReadLine()); if (mode == 1) { Console.WriteLine("\n输入密钥:"); string key = Console.ReadLine().ToUpper(); Cheaser cheaser = new Cheaser(key.ToCharArray()[0]); Console.WriteLine("\n选择:1.加密 2.解密"); mode = Convert.ToInt32(Console.ReadLine()); if (mode == 1) { WriteLine(">>加密<<", "y"); Console.WriteLine("\n明文:"); string txt = Console.ReadLine().ToUpper(); WriteLine("\n加密结果:\n", "g"); Console.WriteLine(cheaser.Encrypt(txt)); WriteLine("----------------------------------", "g"); } else if (mode == 2) { WriteLine(">>解密<<", "y"); Console.WriteLine("\n密文:"); string encTxt = Console.ReadLine().ToUpper(); WriteLine("\n解密结果:\n", "g"); Console.WriteLine(cheaser.Decrypt(encTxt)); WriteLine("----------------------------------", "g"); } else { WriteLine("错误:Gabe Newell is even better than you.", "r"); } } else if (mode == 2) { Console.WriteLine("\n输入密钥:"); string keyword = Console.ReadLine().ToUpper(); CheaserS cheaserS = new CheaserS(keyword); Console.WriteLine("\n选择:1.加密 2.解密"); mode = Convert.ToInt32(Console.ReadLine()); if (mode == 1) { WriteLine(">>加密<<", "y"); Console.WriteLine("\n明文:"); string txt = Console.ReadLine().ToUpper(); WriteLine("\n加密结果:\n", "g"); Console.WriteLine(cheaserS.Encrypt(txt)); WriteLine("----------------------------------", "g"); } else if (mode == 2) { WriteLine(">>解密<<", "y"); Console.WriteLine("\n密文:"); string encTxt = Console.ReadLine().ToUpper(); WriteLine("\n解密结果:\n", "g"); Console.WriteLine(cheaserS.Decrypt(encTxt)); WriteLine("----------------------------------", "g"); } else { WriteLine("错误:Gabe Newell is even better than you.", "r"); } } } else if (mode == 2) { WriteLine(">>眼花密码<<", "y"); Console.WriteLine("\n选择:1.加密 2.解密"); mode = Convert.ToInt32(Console.ReadLine().ToUpper()); if (mode == 1) { WriteLine(">>加密<<", "y"); Console.WriteLine("\n密钥:"); char[] keyArray = Console.ReadLine().ToUpper().ToCharArray(); //初始化密码组 Cheaser[] cheasers = new Cheaser[keyArray.Length]; for (int i = 0; i < keyArray.Length; i++) { cheasers[i] = new Cheaser(keyArray[i]); } Console.WriteLine("\n明文:"); char[] txt = Console.ReadLine().ToUpper().ToCharArray(); char[] enc = new char[txt.Length]; //使用 (索引 mod 密钥长度)处的密码 for (int i = 0; i < txt.Length; i++) { //Console.WriteLine("为字母" + txt[i] + "使用 " + alphabet[cheasers[i % keyArray.Length].mv] + "密码"); enc[i] = cheasers[i % keyArray.Length].Encrypt(txt[i]); } WriteLine("\n加密结果:\n", "g"); Console.WriteLine(new string(enc)); WriteLine("----------------------------------", "g"); } else if (mode == 2) { WriteLine(">>解密<<", "y"); Console.WriteLine("\n密钥:"); string key = Console.ReadLine().ToUpper(); char[] keyArray = key.ToCharArray(); //初始化密码组 Cheaser[] cheasers = new Cheaser[keyArray.Length]; for (int i = 0; i < keyArray.Length; i++) { cheasers[i] = new Cheaser(keyArray[i]); } Console.WriteLine("\n密文:"); char[] enc = Console.ReadLine().ToUpper().ToCharArray(); char[] txt = new char[enc.Length]; for (int i = 0; i < enc.Length; i++) { //Console.WriteLine("为字母" + enc[i] + "使用 " + alphabet[cheasers[i % keyArray.Length].mv] + "密码"); txt[i] = cheasers[i % keyArray.Length].Decrypt(enc[i]); } WriteLine("\n解密结果:\n", "g"); Console.WriteLine(new string(txt)); WriteLine("----------------------------------", "g"); } else { WriteLine("错误:Gabe Newell is even better than you.", "r"); } } else { WriteLine("错误:Gabe Newell is even better than you.", "r"); } } catch (Exception e) { Console.WriteLine(e.Message); } WriteLine("\n按任意键继续...", "y"); Console.ReadKey(true); goto start; }