Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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;
        }