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