예제 #1
0
        static void Main(string[] args)
        {
            Enigma enigma = new Enigma();

            string test = "THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG";

            string testOne = "EAH EBGBG JKRUK GQT PBALCO NBHX EIT SGCS TBQ";

            Console.WriteLine(enigma.Transform(new int[] { 0, 1, 2 }, test));
            Console.WriteLine(enigma.Transform(new int[] { 0, 1, 2 }, testOne));

            Console.ReadLine();
        }
예제 #2
0
파일: MainFrm.cs 프로젝트: gforce2k5/Enigma
        private void cmdProfiling_Click(object sender, EventArgs e)
        {
            Random random = new Random();

            for (int i = 0; i < 100000; i++)
            {
                int[]      rotors = new int[3];
                List <int> nums   = new List <int>(5);
                for (int j = 1; j <= 5; j++)
                {
                    nums.Add(j);
                }
                for (int j = 0; j < 3; j++)
                {
                    int r = random.Next(5 - j);
                    rotors[j] = nums[r];
                    nums.RemoveAt(r);
                }

                Enigma randEnigma = new Enigma(rotors[0], rotors[1], rotors[2]);

                randEnigma.L.RingSetting = random.Next(26) + 1;
                randEnigma.M.RingSetting = random.Next(26) + 1;
                randEnigma.R.RingSetting = random.Next(26) + 1;

                randEnigma.L.Offset = random.Next(26) + 1;
                randEnigma.M.Offset = random.Next(26) + 1;
                randEnigma.R.Offset = random.Next(26) + 1;

                nums = new List <int>(26);
                string plug     = "";
                int    maxPairs = random.Next(10) + 1;

                for (int j = 0; j < 26; j++)
                {
                    nums.Add(j);
                }
                for (int j = 0; j < maxPairs * 2; j++)
                {
                    int l = random.Next(26 - j);
                    plug += (char)('A' + nums[l]);
                    nums.RemoveAt(l);
                }

                randEnigma.Plug = new Plugboard(plug);
                randEnigma.Translate("RANDOMMESSAGE");
            }
        }
예제 #3
0
 private void EncodeDecode_Click(object sender, EventArgs e)
 {
     if (settings != null)
     {
         List <Rotor> selectedRotors = (List <Rotor>)settings[1];
         try
         {
             selectedRotors[0].Position = Enigma.alphabet.IndexOf(rightRotor.Text.ToUpper()[0]);
             selectedRotors[1].Position = Enigma.alphabet.IndexOf(middleRotor.Text.ToUpper()[0]);
             selectedRotors[2].Position = Enigma.alphabet.IndexOf(leftRotor.Text.ToUpper()[0]);
             if (selectedRotors.Count == 4)
             {
                 selectedRotors[3].Position = Enigma.alphabet.IndexOf(rotor4.Text.ToUpper()[0]);
             }
         }
         catch
         {
             MessageBox.Show("Неправильне введення положення роторів!\r\nПоложення роторів вказуються латинськими літерами від A до Z включно");
             return;
         }
         string inpuText = symbol.Text.ToUpper();
         if (ValidationOfEnigma.BelongAlphabet(inpuText.Replace(" ", "")))
         {
             string cipherText = string.Empty;
             foreach (char s in inpuText)
             {
                 if (s != ' ')
                 {
                     cipherText += Enigma.Encrypt(s, (string)settings[0], selectedRotors, (string)settings[2]).ToString();
                 }
                 else
                 {
                     cipherText += " ";
                 }
             }
             encodedSymbol.Text = cipherText;
         }
         else
         {
             MessageBox.Show("Символи у вхідному тексті мають бути латинськими літерами!");
         }
     }
 }
예제 #4
0
파일: MainFrm.cs 프로젝트: gforce2k5/Enigma
        private void Apply()
        {
            enigma = new Enigma(cmbRotor1.SelectedIndex + 1, cmbRotor2.SelectedIndex + 1, cmbRotor3.SelectedIndex + 1);
            enigma.L.RingSetting = cmbLeftSetting.SelectedIndex + 1;
            enigma.L.Offset      = cmbLeftOffset.SelectedIndex + 1;
            enigma.M.RingSetting = cmbMiddleSetting.SelectedIndex + 1;
            enigma.M.Offset      = cmbMiddleOffset.SelectedIndex + 1;
            enigma.R.RingSetting = cmbRightSetting.SelectedIndex + 1;
            enigma.R.Offset      = cmbRightOffset.SelectedIndex + 1;

            try
            {
                enigma.Plug       = new Plugboard(txtPlugboard.Text);
                txtText.Enabled   = true;
                cmdEncode.Enabled = true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }