Example #1
0
        public IActionResult ThresholdGenerate([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]);
            }

            ThresholdGenerator generator = new ThresholdGenerator(registers);

            SeriesMode mode = (SeriesMode)viewModel.Mode;

            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 }));
            }
            }

            return(Json(""));
        }
Example #2
0
        private void createRegistersBtn_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(numOfLfsrTxtBox.Text))
            {
                return;
            }

            int numOfRegisters = int.Parse(numOfLfsrTxtBox.Text);

            if (numOfRegisters % 2 == 0)
            {
                MessageBox.Show("Liczba rejestrów musi być nieparzysta!");
                return;
            }

            Lfsr_list.Children.Clear();
            registersLabel = new Label[numOfRegisters];

            for (int i = 0; i < numOfRegisters; i++)
            {
                RegisterUserControl register = new RegisterUserControl();
                register.RegisterNumberLabel.Content = "Rejestr " + (i + 1);
                if (i % 2 == 0)
                {
                    register.MainGrid.Background = Brushes.LightYellow;
                }
                Lfsr_list.Children.Add(register);
                registersLabel[i] = register.rState;
            }
            Lfsr[] registers = new Lfsr[numOfRegisters];
            for (int i = 0; i < registers.Length; i++)
            {
                registers[i] = new Lfsr(registersLabel[i].Content as string);
            }

            generator = new ThresholdGenerator(registers);
        }
Example #3
0
        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;
            }

            int numOfLfsr = Convert.ToInt32(lfsr_amount.Text);

            Lfsr[] lfsr   = new Lfsr[numOfLfsr];
            uint[] parsed = new uint[numOfLfsr];

            var registersLength = Convert.ToInt32(RegisterLength_ComboBox.SelectedItem);

            for (int i = 0; i < numOfLfsr; i++)
            {
                string s = ((TextBox)Lfsr_list.Children[((i + 1) * 2) - 1]).Text;

                if (s.Length == 0)
                {
                    MessageBox.Show("Uzupełnij pola z wartościami początkowymi rejestrów.");
                    return;
                }

                else if (!uint.TryParse(s, out parsed[i]))
                {
                    MessageBox.Show("Wartości początkowe rejestrów muszą być dodatnią liczbą całkowitą.");
                    return;
                }

                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 ThresholdGenerator(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());
            }
        }
Example #4
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            int  parsedValue;
            byte parsed;

            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;
            }

            int numOfLfsr = Convert.ToInt32(lfsr_amount.Text);

            Lfsr[] lfsr = new Lfsr[numOfLfsr];
            for (int i = 0; i < numOfLfsr; i++)
            {
                lfsr[i] = new Lfsr();

                string s = ((TextBox)Lfsr_list.Children[((i + 1) * 2) - 1]).Text;

                if (s.Length == 0)
                {
                    MessageBox.Show("Musisz podać wartości początkowe rejestrów.");
                    return;
                }

                else if (!byte.TryParse(s, out parsed))
                {
                    MessageBox.Show("Musisz podać wartości początkowe rejestrów z zakresu (0-255).");
                    return;
                }



                lfsr[i].SetRegisterValues(new BitArray(new byte[] { Convert.ToByte(s) }));
            }

            Stopwatch sw = new Stopwatch();

            wynik.Clear();
            LfsrGenerator generator = new ThresholdGenerator(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();
            }
        }