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(); }
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"); } }
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("Символи у вхідному тексті мають бути латинськими літерами!"); } } }
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); } }