Jump to content
Zentraedi

Cifrado Cesar para android en Xamarin.Android by Zentraedi

Recommended Posts

Zentraedi    3

Hola sigo practicando con las aplicaciones android y acá les traigo un nuevo programa quizás viejo pero al mismo tiempo interesante para quienes estamos aprendiendo día a día a programar y porque no en android.

Esta app consiste en el famoso cifrado de César con el cual enviaba mensajes a sus comandantes para dirigir su ejercito y no correr el riesgo que sus enemigos puedan leer este mensaje, si bien ya es un poco viejo y existen mejores formas de cifrado, se me ocurrió implementarlo en android de igual manera en forma de practica y exponerlo para aquellos que quieran aventurarse en la programación para teléfonos móviles.

El programa consiste en leer letra por letra y desplazarla según la clave. EJ : si Clave= 2..... A=C, B=D, C=D, etc.

El mensaje cifrado puede enviarse por E-mail utilizando nuestra cuenta configurada en el telefono.

Capturas de la app:



Ver 1.0

15eteo4.jpg

2vsewbt.jpg

Ver 2.0 (envia E-mails)

4syzj8.jpg

Código para Xamarin en C#:

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace CifradoCesar
{
   [Activity(Label = "CifradoCesar", MainLauncher = true, Icon = "@drawable/icon")]
   public class MainActivity : Activity
   {
       static string abc = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ_-+,#$%/()¿?¡!|,.;:{}[]";
       EditText Clave, Mensaje;
       ImageButton Cifrar, Borrar, Descifrar, Enviar;
       TextView Msj;

       protected override void OnCreate(Bundle bundle)
       {
           base.OnCreate(bundle);

           // Set our view from the "main" layout resource
           SetContentView(Resource.Layout.Main);

           Clave = FindViewById(Resource.Id.editText1);
           Mensaje = FindViewById(Resource.Id.editText2);
           Cifrar = FindViewById(Resource.Id.imageButton1);
           Borrar = FindViewById(Resource.Id.imageButton2);
           Descifrar = FindViewById(Resource.Id.imageButton3);
           Msj = FindViewById(Resource.Id.textView2);
           Enviar = FindViewById(Resource.Id.Enviar);

           Clave.Text = "0";


           Cifrar.Click += delegate
           {
               if (Clave.Text.Equals(""))
               {
                   AlertDialog.Builder alert = new AlertDialog.Builder(this);
                   AlertDialog error = alert.Create();
                   error.SetTitle("Error");
                   error.SetIcon(Android.Resource.Drawable.IcDialogAlert);
                   error.SetMessage("Debes colocar la clave para Cifrar");
                   error.SetButton("OK", (w, a) => { });
                   error.Show();
               }
               else  { 
                   int clave = Convert.ToInt32(Clave.Text);

                   if (clave > 76 || clave == 0)
                   {
                       AlertDialog.Builder alert = new AlertDialog.Builder(this);
                       AlertDialog error = alert.Create();
                       error.SetTitle("Error");
                       error.SetIcon(Android.Resource.Drawable.IcDialogAlert);
                       error.SetMessage("La clave no es un numero valido, la clave debe ser un numero de 1 a 76");
                       error.SetButton("OK", (w, a) => { });
                       error.Show();
                   }

               else if (Mensaje.Text == "")
               {
                   AlertDialog.Builder alert = new AlertDialog.Builder(this);
                   AlertDialog error = alert.Create();
                   error.SetTitle("Error");
                   error.SetIcon(Android.Resource.Drawable.IcDialogAlert);
                   error.SetMessage("No hay mensaje para cifrar, escribe uno");
                   error.SetButton("OK", (w, a) => { });
                   error.Show();
               }
               else
               {

                   string MsjCifrado = cifrar(Mensaje.Text, clave);
                   Mensaje.Text = MsjCifrado;
                   Msj.Text = "Mensaje Cifrado:";
               }
               }
           };

           Descifrar.Click += delegate
           {
               if (Clave.Text.Equals(""))
               {
                   AlertDialog.Builder alert = new AlertDialog.Builder(this);
                   AlertDialog error = alert.Create();
                   error.SetTitle("Error");
                   error.SetIcon(Android.Resource.Drawable.IcDialogAlert);
                   error.SetMessage("Debes colocar la clave para Descifrado");
                   error.SetButton("OK", (w, a) => { });
                   error.Show();
               }
               else
               {
                   int clave = Convert.ToInt32(Clave.Text);
                   if (clave > 76 || clave == 0)
                   {
                       AlertDialog.Builder alert = new AlertDialog.Builder(this);
                       AlertDialog error = alert.Create();
                       error.SetTitle("Error");
                       error.SetIcon(Android.Resource.Drawable.IcDialogAlert);
                       error.SetMessage("La clave no es un numero valido, la clave debe ser un numero de 1 a 76");
                       error.SetButton("OK", (w, a) => { });
                       error.Show();
                   }
                   else if (Mensaje.Text == "")
                   {
                       AlertDialog.Builder alert = new AlertDialog.Builder(this);
                       AlertDialog error = alert.Create();
                       error.SetTitle("Error");
                       error.SetIcon(Android.Resource.Drawable.IcDialogAlert);
                       error.SetMessage("No hay mensaje para descifrar");
                       error.SetButton("OK", (w, a) => { });
                       error.Show();
                   }
                   else
                   {
                       string MsjeDescifrado = descifrar(Mensaje.Text, clave);
                       Mensaje.Text = MsjeDescifrado;
                       Msj.Text = "Mensaje Descifrado:";
                   }
               }
           };

           Enviar.Click += (s, e) =>
           {
               if (Mensaje.Text == "")
               {
                   AlertDialog.Builder alert = new AlertDialog.Builder(this);
                   AlertDialog error = alert.Create();
                   error.SetTitle("Error");
                   error.SetIcon(Android.Resource.Drawable.IcDialogAlert);
                   error.SetMessage("No hay ningun mensaje para enviar");
                   error.SetButton("OK", (w, a) => { });
                   error.Show();
               }
               else
               {
                   Intent email = new Intent(Intent.ActionSend);
                   email.PutExtra(Intent.ExtraText, Mensaje.Text.ToString());
                   email.SetType("message/rfc822");
                   StartActivity(Intent.CreateChooser(email, "Enviar por medio de:"));
               }
           };



           Borrar.Click += delegate
           {
               Clave.Text = "0";
               Mensaje.Text = "";
               Msj.Text = "Mensaje:";
           };
       }
       static string cifrar(string mensaje, int clave)
       {
           String cifrado = "";
           if (clave > 0 && clave             {
               for (int i = 0; i                 {
                   int posCaracter = getPosABC(mensaje[i]);

                   if (posCaracter != -1)
                   {
                       int pos = posCaracter + clave;
                       while (pos >= abc.Length)
                       {
                           pos = pos - abc.Length;
                       }
                       cifrado += abc[pos];
                   }
                   else
                   {
                       cifrado += mensaje[i];
                   }
               }
           }
           return cifrado;
       }
       static string descifrar(string mensaje, int clave)
       {
           String cifrado = "";
           if (clave > 0 && clave             {
               for (int i = 0; i                 {
                   int posCaracter = getPosABC(mensaje[i]);

                   if (posCaracter != -1)
                   {
                       int pos = posCaracter - clave;
                       while (pos                         {
                           pos = pos + abc.Length;
                       }
                       cifrado += abc[pos];
                   }
                   else
                   {
                       cifrado += mensaje[i];
                   }
               }
           }
           return cifrado;
       }
       static int getPosABC(char caracter)
       {
           for (int i = 0; i             {
               if (caracter == abc[i])
               {
                   return i;
               }
           }

           return -1;
       }


   }
}

Link de descarga: CifradoCesarV2.0-ByZentraedi

Espero que sea de su agrado y que si tienen tiempo la prueben y me comenten si les agrado o no o alguna recomendacion para seguir progresando, acepto todo tipo de criticas al respecto. Saludos.

  • Me gusta 2

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario


  • Navegando Recientemente   0 miembros

    No registered users viewing this page.

×