예제 #1
0
        static void Main(string[] args)
        {
            int Choice = 0, Delay = 50;

            char[] alpha  = "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖabcdefghijklmnopqrstuvwxyzåäö ".ToCharArray();
            int[]  Places = new int[57];

            for (int i = 0; i < Places.Length; i++)
            {
                Places[i] = i;
            }
            Console.WriteLine("Want to Encrypt(1) or Decrypt?(2) \n");
            Choice = Convert.ToInt32(Console.ReadLine());

            if (Choice == 1)
            {
                Encrypt();
            }
            else
            {
                Decrypt();
            }

            void Encrypt()
            {
                List <int> MessagePlaces;
                List <int> EncryptedMessagePlaces;

                string Message;

                char[] MessageChar;
                char[] EncryptedMessage;
                int    EncryptKey;

                MessagePlaces          = new List <int>();
                EncryptedMessagePlaces = new List <int>();

                Console.Clear();
                Console.WriteLine("Enter message");

                Message = Console.ReadLine();

                MessageChar = Message.ToCharArray();

                EncryptedMessage = new char[Message.Length];

                Console.WriteLine("\nKey?");
                EncryptKey = Convert.ToInt32(Console.ReadLine());

                //Making Corresponding numbers from the first message
                for (int i = 0; i < MessageChar.Length; i++)
                {
                    char CurrentChar = MessageChar[i];
                    int  CorrespondingInt;

                    for (int a = 0; a < alpha.Length; a++)
                    {
                        if (CurrentChar == alpha[a])
                        {
                            CorrespondingInt = a;

                            MessagePlaces.Add(CorrespondingInt);
                            EncryptedMessagePlaces.Add(CorrespondingInt);

                            Console.Write(CorrespondingInt + " ");

                            Thread.Sleep(Delay);
                        }
                    }
                }

                //Making the new places
                Console.WriteLine("\n");
                for (int b = 0; b < MessagePlaces.Count; b++)
                {
                    EncryptedMessagePlaces[b] += EncryptKey;
                    if (EncryptedMessagePlaces[b] > 57)
                    {
                        EncryptedMessagePlaces[b] -= alpha.Length;
                    }
                    Console.Write(EncryptedMessagePlaces[b] + " ");
                    Thread.Sleep(Delay);
                }

                //Making a new string with the new characters correspondig the odd places array
                Console.WriteLine("\n");
                for (int c = 0; c < EncryptedMessagePlaces.Count; c++)
                {
                    char CorrespondingChar;
                    int  CurrentInt;

                    CurrentInt        = EncryptedMessagePlaces[c];
                    CorrespondingChar = alpha[CurrentInt];

                    EncryptedMessage[c] = CorrespondingChar;

                    Console.Write(EncryptedMessage[c]);
                    Thread.Sleep(Delay);
                }

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("\n\nDone!\n\n");

                if (!Directory.Exists("/Logs"))
                {
                    ;
                }
                Directory.CreateDirectory("/Logs");

                FileStream   ostrm;
                StreamWriter writer;
                TextWriter   oldOut = Console.Out;

                try
                {
                    ostrm  = new FileStream("./Logs/" + Message + ".txt", FileMode.Create, FileAccess.Write);
                    writer = new StreamWriter(ostrm);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Cannot open Redirect.txt for writing");
                    Console.WriteLine(e.Message);
                    return;
                }

                Console.SetOut(writer);

                //Write Something here
                Console.WriteLine("Enter message");
                Console.WriteLine(Message);
                Console.WriteLine();
                Console.WriteLine("Key?");
                Console.WriteLine(EncryptKey);
                Console.WriteLine();
                Console.WriteLine("Encryption: ");

                for (int i = 0; i < MessagePlaces.Count; i++)
                {
                    Console.Write(MessagePlaces[i] + " ");
                }
                Console.WriteLine();
                Console.WriteLine();

                for (int i = 0; i < EncryptedMessagePlaces.Count; i++)
                {
                    Console.Write(EncryptedMessagePlaces[i] + " ");
                }
                Console.WriteLine();
                Console.WriteLine();

                for (int i = 0; i < EncryptedMessagePlaces.Count; i++)
                {
                    Console.Write(EncryptedMessage[i]);
                }
                Console.WriteLine();
                Console.WriteLine();

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Done!");

                Console.WriteLine();
                Console.WriteLine();

                Console.SetOut(oldOut);
                writer.Close();
                ostrm.Close();

                Console.WriteLine("Wrote everything to: ./Logs/" + Message + ".txt");

                Console.WriteLine("Opening " + Message + ".txt");
                System.Diagnostics.Process.Start("notepad.exe", "./Logs/" + Message + ".txt");
            }

            void Decrypt()
            {
                List <int> EncryptedMessagePlaces;
                List <int> MessagePlaces;

                string EncryptedMessage;

                char[] MessageChar;
                char[] EncryptedMessageChar;
                int    EncryptKey;

                MessagePlaces          = new List <int>();
                EncryptedMessagePlaces = new List <int>();

                Console.Clear();
                Console.WriteLine("Enter message");

                EncryptedMessage     = Console.ReadLine();
                EncryptedMessageChar = EncryptedMessage.ToCharArray();
                MessageChar          = new char[EncryptedMessageChar.Length];

                Console.WriteLine("\nKey?");
                EncryptKey = Convert.ToInt32(Console.ReadLine());

                //Making Corresponding numbers from the first message
                for (int i = 0; i < MessageChar.Length; i++)
                {
                    char CurrentChar = EncryptedMessageChar[i];
                    int  CorrespondingInt;

                    for (int a = 0; a < alpha.Length; a++)
                    {
                        if (CurrentChar == alpha[a])
                        {
                            CorrespondingInt = a;

                            MessagePlaces.Add(CorrespondingInt);
                            EncryptedMessagePlaces.Add(CorrespondingInt);

                            Console.Write(CorrespondingInt + " ");

                            Thread.Sleep(Delay);
                        }
                    }
                }

                //Making the new places
                Console.WriteLine("\n");
                for (int b = 0; b < EncryptedMessagePlaces.Count; b++)
                {
                    MessagePlaces[b] -= EncryptKey;
                    if (MessagePlaces[b] < 0)
                    {
                        MessagePlaces[b] += alpha.Length;
                    }
                    Console.Write(MessagePlaces[b] + " ");
                    Thread.Sleep(Delay);
                }

                //Making a new string with the new characters correspondig the odd places array
                Console.WriteLine("\n");
                for (int c = 0; c < EncryptedMessagePlaces.Count; c++)
                {
                    char CorrespondingChar;
                    int  CurrentInt;

                    CurrentInt        = MessagePlaces[c];
                    CorrespondingChar = alpha[CurrentInt];

                    MessageChar[c] = CorrespondingChar;

                    Console.Write(MessageChar[c]);
                    Thread.Sleep(Delay);
                }

                if (!Directory.Exists("/Logs"))
                {
                    ;
                }
                Directory.CreateDirectory("/Logs");

                FileStream   ostrm;
                StreamWriter writer;
                TextWriter   oldOut = Console.Out;

                try
                {
                    ostrm  = new FileStream("./Logs/" + EncryptedMessage + ".txt", FileMode.Create, FileAccess.Write);
                    writer = new StreamWriter(ostrm);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Cannot open Redirect.txt for writing");
                    Console.WriteLine(e.Message);
                    return;
                }

                Console.SetOut(writer);

                //Write Something here
                Console.WriteLine("Enter message");
                Console.WriteLine(EncryptedMessage);
                Console.WriteLine();
                Console.WriteLine("Key?");
                Console.WriteLine(EncryptKey);
                Console.WriteLine();
                Console.WriteLine("Decryption: ");

                for (int i = 0; i < EncryptedMessagePlaces.Count; i++)
                {
                    Console.Write(EncryptedMessagePlaces[i] + " ");
                }
                Console.WriteLine();
                Console.WriteLine();

                for (int i = 0; i < MessagePlaces.Count; i++)
                {
                    Console.Write(MessagePlaces[i] + " ");
                }
                Console.WriteLine();
                Console.WriteLine();

                for (int i = 0; i < MessagePlaces.Count; i++)
                {
                    Console.Write(MessageChar[i]);
                }
                Console.WriteLine();
                Console.WriteLine();

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Done!");

                Console.WriteLine();
                Console.WriteLine();

                Console.SetOut(oldOut);
                writer.Close();
                ostrm.Close();

                Console.WriteLine();
                Console.WriteLine("Wrote everything to: ./Logs/" + EncryptedMessage + ".txt");
                Console.WriteLine("Opening " + EncryptedMessage + ".txt");

                System.Diagnostics.Process.Start("notepad.exe", "./Logs/" + EncryptedMessage + ".txt");
            }

            Console.ReadKey();
        }