public IActionResult ShrinkingGenerate([FromBody] LfsrGeneratorsViewModel viewModel) { var numOfRegisters = viewModel.Registers.Length; Lfsr[] registers = new Lfsr[numOfRegisters]; for (int i = 0; i < numOfRegisters; i++) { registers[i] = new Lfsr(viewModel.Registers[i]); registers[i].SetFeedbackFunction(viewModel.FeedbackFunctions[i]); } ShrinkingGenerator generator = new ShrinkingGenerator(registers); SeriesMode mode = (SeriesMode)viewModel.Mode; try { switch (mode) { case SeriesMode.Binary: { var data = generator.GenerateBitsAsChars(viewModel.Length); var r = LfsrHelper.GetRegisterAsStringArray(generator.Registers); return(Json(new { data = new string(data), registers = r })); } case SeriesMode.Hex: { var data = generator.GenerateBytes(viewModel.Length); var r = LfsrHelper.GetRegisterAsStringArray(generator.Registers); return(Json(new { data = BitConverter.ToString(data), registers = r })); } case SeriesMode.Base64: { var data = generator.GenerateBytes(viewModel.Length); var r = LfsrHelper.GetRegisterAsStringArray(generator.Registers); return(Json(new { data = data, registers = r })); } } } catch (Exception e) { return(BadRequest(new { Result = false, Message = e.Message })); } return(Json("")); }
private void Button_Click(object sender, RoutedEventArgs e) { uint parsedValue; if ((series_length.Text).ToString().Length == 0) { MessageBox.Show("Podaj długość ciągu do wygenerowania."); return; } else if (!uint.TryParse(series_length.Text, out parsedValue)) { MessageBox.Show("Długość ciągu do wygenerowania musi być dodatnią liczbą całkowitą."); return; } uint[] parsed = new uint[2]; if ((lfsr1.Text).ToString().Length == 0 || (lfsr2.Text).ToString().Length == 0) { MessageBox.Show("Uzupełnij pola z wartościami początkowymi rejestrów."); return; } else if (!uint.TryParse(lfsr1.Text, out parsed[0]) || !uint.TryParse(lfsr2.Text, out parsed[2])) { MessageBox.Show("Wartości początkowe rejestrów muszą być dodatnią liczbą całkowitą."); return; } var registersLength = Convert.ToInt32(RegisterLength_ComboBox.SelectedItem); int numOfLfsr = 2; Lfsr[] lfsr = new Lfsr[numOfLfsr]; for (int i = 0; i < numOfLfsr; i++) { lfsr[i] = new Lfsr(); TextBox tb = (TextBox)this.FindName("lfsr" + (i + 1).ToString()); lfsr[i] = new Lfsr(registersLength); var boolArray = Convert.ToString(parsed[i], 2).Select(str => str.Equals('1')).Take(registersLength).ToArray(); var bitArray = new BitArray(registersLength); for (int j = 0; j < boolArray.Length; j++) { bitArray[j] = boolArray[j]; } lfsr[i].SetRegisterValues(bitArray); } wynik.Clear(); LfsrGenerator generator = new ShrinkingGenerator(lfsr); if (typ.SelectedIndex == 0) { var gen = generator.GenerateBitsAsChars(Convert.ToInt32(series_length.Text));; wynik.Text = new string(gen); } else if (typ.SelectedIndex == 1) { var gen1 = generator.GenerateBytes(Convert.ToInt32(series_length.Text)); wynik.Text = BitConverter.ToString(gen1); } else if (typ.SelectedIndex == 2) { var gen1 = generator.GenerateIntegers(Convert.ToInt32(series_length.Text)); wynik.Text = String.Join(" ", gen1.Select(p => p.ToString()).ToArray()); } }
private void Button_Click(object sender, RoutedEventArgs e) { int parsedValue; if (!int.TryParse(series_length.Text, out parsedValue)) { MessageBox.Show("Długość ciągu do wygenerowania musi być liczbą całkowitą."); return; } else if ((series_length.Text).ToString().Length == 0) { MessageBox.Show("Podaj długość ciągu do wygenerowania."); return; } else if (Convert.ToInt32(series_length.Text) < 1) { MessageBox.Show("Długość ciągu do wygenerowania musi być większa od zera."); return; } byte parsed; if (!byte.TryParse(lfsr1.Text, out parsed) || !byte.TryParse(lfsr2.Text, out parsed)) { MessageBox.Show("Musisz podać wartości początkowe rejestrów z zakresu (0-255)."); return; } else if ((lfsr1.Text).ToString().Length == 0 || (lfsr2.Text).ToString().Length == 0) { MessageBox.Show("Uzupełnij pola z wartościami początkowymi rejestrów."); return; } int numOfLfsr = 2; Lfsr[] lfsr = new Lfsr[numOfLfsr]; for (int i = 0; i < numOfLfsr; i++) { lfsr[i] = new Lfsr(); TextBox tb = (TextBox)this.FindName("lfsr" + (i + 1).ToString()); lfsr[i].SetRegisterValues(new BitArray(new byte[] { Convert.ToByte(tb.Text) })); } Stopwatch sw = new Stopwatch(); wynik.Clear(); LfsrGenerator generator = new ShrinkingGenerator(lfsr); if (typ.SelectedIndex == 0) { sw.Start(); var gen = generator.GenerateBitsAsChars(Convert.ToInt32(series_length.Text)); sw.Stop(); foreach (var item in gen) { wynik.Text = wynik.Text + item; } sw.Reset(); } else if (typ.SelectedIndex == 1) { sw.Start(); var gen1 = generator.GenerateBytes(Convert.ToInt32(series_length.Text)); sw.Stop(); foreach (var item in gen1) { wynik.Text = wynik.Text + item; } sw.Reset(); } else if (typ.SelectedIndex == 2) { sw.Start(); var gen1 = generator.GenerateIntegers(Convert.ToInt32(series_length.Text)); sw.Stop(); foreach (var item in gen1) { wynik.Text = wynik.Text + item; } sw.Reset(); } }