コード例 #1
0
        private void btnCargarLlaves_Click(object sender, EventArgs e)
        {
            if (ofdAbrir.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string fichero   = ofdAbrir.FileName;
                string contenido = String.Empty;

                if (File.Exists(fichero))
                {
                    contenido = File.ReadAllText(fichero);
                    string[] lineas = contenido.Split(Environment.NewLine.ToCharArray());

                    for (int i = 0; i < 7; i++)
                    {
                        if (i == 0)
                        {
                            n = ToBigInteger(lineas[i]);
                        }
                        if (i == 2)
                        {
                            k1 = ToBigInteger(lineas[i]);
                        }
                        if (i == 4)
                        {
                            k2 = ToBigInteger(lineas[i]);
                        }
                        if (i == 6)
                        {
                            k3 = ToBigInteger(lineas[i]);
                        }
                    }

                    modulo     = ToBigInteger(operaciones.obtenerModulo(1));
                    txtbN.Text = modulo.ToString();

                    txtbNaNb.Text = n.ToString();

                    Euclides.moduloInverso(modulo, k1);
                    k1_inv = Euclides.inv;
                    Euclides.moduloInverso(modulo, k2);
                    k2_inv = Euclides.inv;
                    Euclides.moduloInverso(modulo, k3);
                    k3_inv = Euclides.inv;

                    txtbK1.Text    = k1.ToString();
                    txtbK1Inv.Text = k1_inv.ToString();

                    txtbK2.Text    = k2.ToString();
                    txtbK2Inv.Text = k2_inv.ToString();

                    txtbK3.Text    = k3.ToString();
                    txtbK3Inv.Text = k3_inv.ToString();
                }
            }
        }
コード例 #2
0
ファイル: Principal.cs プロジェクト: Ragnarok1296/Protocolos
        private void numAleatorio()
        {
            if (cbCoS.SelectedIndex == 0)
            {
                //Se obtiene el modulo
                do
                {
                    n = binarioADecimal(binario(Convert.ToInt16(cbBits.SelectedItem.ToString())));
                } while(esPrimo(n));

                // Se genera na que es un no invertible
                do
                {
                    na = RandomBigInteger(2, n);
                } while (Euclides.moduloInverso(n, na));

                bool bandera;
                // Se genera ka que es un invertible
                do
                {
                    ka = RandomBigInteger(2, n);

                    bandera = Euclides.moduloInverso(n, ka);

                    ka_inv = Euclides.inv;
                } while (!bandera);
            }
            else if (cbCoS.SelectedIndex == 1)
            {
                //Genrar nb (No inversible)
                do
                {
                    nb = RandomBigInteger(2, n);
                } while (Euclides.moduloInverso(n, nb));

                bool bandera;

                // Se genera kb que es un invertible
                do
                {
                    kb = RandomBigInteger(2, n);

                    bandera = Euclides.moduloInverso(n, kb);

                    kb_inv = Euclides.inv;
                } while (!bandera);
            }
        }
コード例 #3
0
        private void numAleatorio()
        {
            // Se genera na que es un no invertible
            do
            {
                m1 = RandomBigInteger(2, modulo);
            } while (Euclides.moduloInverso(modulo, m1));


            txtbM1.Text = m1.ToString();

            // Se genera na que es un no invertible
            do
            {
                m2 = RandomBigInteger(2, modulo);
            } while (Euclides.moduloInverso(modulo, m2));


            txtbM2.Text = m2.ToString();
        }