private void EjecutaReceptor()
        {
            write("Soy el receptor");
            var asim           = new CAsimetrica();
            var miClave        = asim.DameCPrivada("Receptor");
            var suClavePublica = asim.DameCPublica("Emisor");

            write("Recupero la clave simetrica encriptada");
            var encClaveSimetrica = msgClave;

            write("Desencripto la clave simetrica con mi C.Privada");
            var newClaveSimetrica = asim.Desencipta(miClave, encClaveSimetrica);

            write(newClaveSimetrica);
            var sim = new CSimetrica();

            sim.decodeResume(newClaveSimetrica);
            write(sim.Key);
            write(sim.IV);
            write("Recupero el fichero");
            write("Desencripto el fichero");
            sim.DesEncripta(@"..\..\Fichero.bin", @"..\..\Fichero.bin.txt");
            write("Recupero la firma");
            var firma = msgFirma;

            write("Valido la firma con la C.Publica del emisor");
            var val = asim.Verifica(suClavePublica, File.OpenRead(@"..\..\Fichero.bin.txt"), firma);

            write("Es " + (val ? "Valido" : "Incorrecto"));
            write("Termine");
        }
        private void EjecutaEmisor()
        {
            write("Soy el emisor");
            var asim           = new CAsimetrica();
            var miClave        = asim.DameCPrivada("Emisor");
            var suClavePublica = asim.DameCPublica("Receptor");

            write("Creo la clave simetrica");
            var sim = new CSimetrica();

            write(sim.Key);
            write(sim.IV);
            var newClaveSimetrica = sim.dameResume();

            write(newClaveSimetrica);
            write("Encripto la clave simetrica con la C.Publica del receptor");
            var encClaveSimetrica = asim.Encipta(suClavePublica, newClaveSimetrica);

            write("Envio la clave simetrica encriptada");
            msgClave = encClaveSimetrica;
            write(encClaveSimetrica);
            write("Encripto el fichero");
            sim.Encripta(@"..\..\Fichero.txt", @"..\..\Fichero.bin");
            write("Envio el fichero");
            write("Firmo el fichero con mi clave privada");
            var firma = asim.Firma(miClave, File.OpenRead(@"..\..\Fichero.txt"));

            write("Envio la firma");
            msgFirma = firma;
            write("Termine");
        }
        private void BtnCrear_Click(object sender, RoutedEventArgs e)
        {
            var algo = (cbAlgoritmos.SelectedValue as ComboBoxItem).Content.ToString();

            srv = new CSimetrica(SymmetricAlgorithm.Create(algo));
            if (string.IsNullOrWhiteSpace(txtClave.Text))
            {
                txtClave.Text = Convert.ToBase64String(srv.Key);
            }
            else
            {
                srv.Key = Convert.FromBase64String(txtClave.Text);
            }
            if (string.IsNullOrWhiteSpace(txtVector.Text))
            {
                txtVector.Text = Convert.ToBase64String(srv.IV);
            }
            else
            {
                srv.IV = Convert.FromBase64String(txtVector.Text);
            }
        }