Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / c++ / Visual Studio / Cifrado del Cesar en C Sharp

Cifrado del Cesar en C Sharp

Autor jc mouse miércoles, septiembre 3, 2014

En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de César, es una de las técnicas de cifrado más simples y más usadas. Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto. Por ejemplo, con un desplazamiento de 3, la A sería sustituida por la D (situada 3 lugares a la derecha de la A ), la B sería reemplazada por la E, etc. Este método debe su nombre a Julio César, que lo usaba para comunicarse con sus generales.[wikipedia]

cifrado cesar

Solución en C#

01 using System;
02 using System.Collections.Generic;
03 using System.Linq;
04 using System.Text;
05 
06 namespace Cesar
07 {
08     class Program
09     {
10         static string abc = "abcdefghijklmñnopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890_-+,#$%&/()=¿?¡!|,.;:{}[]";
11 
12         static void Main(string[] args)
13         {
14             
15             String mensaje = "Cada vez que escucho hablar de ese gato, empiezo a sacar mi pistola [en relación a la Paradoja de Schrödinger]";
16 
17             //se cifra el mensaje
18             string tmp = cifrar(mensaje, 10);
19 
20 
21             Console.WriteLine( "Mensaje cifrado: \"{0}\" \n\n",tmp );//se muestra en pantalla
22             
23             //se descifra el mensaje
24             Console.WriteLine("Mensaje descifrado: \"{0}\" \n\n", descifrar(tmp, 10));
25 
26             //si se descifra con un desplazamiento diferente al que se uso para cifrar
27             //el mensaje sera el equivocado
28             Console.WriteLine("Mensaje descifrado con desplazamiento equivocado:\n \"{0}\"", descifrar(tmp, 7));
29             
30             Console.ReadKey();
31         }
32 
33 
34         static string cifrar(string mensaje, int desplazamiento) 
35         {
36             String cifrado = "";
37             if ( desplazamiento > 0 && desplazamiento < abc.Length )
38             {                
39                 //recorre caracter a caracter el mensaje a cifrar
40                 for (int i = 0; i < mensaje.Length; i++)
41                 {
42                     int posCaracter = getPosABC(mensaje[i]);
43                     if (posCaracter != -1) //el caracter existe en la variable abc
44                     {
45                         int pos = posCaracter + desplazamiento;
46                         while (pos >= abc.Length)
47                         {
48                             pos = pos - abc.Length;                           
49                         }                   
50                         //concatena al mensaje cifrado
51                         cifrado += abc[pos];
52                     }
53                     else//si no existe el caracter no se cifra
54                     {
55                         cifrado += mensaje[i];
56                     }            
57                 }
58 
59             }
60             return cifrado;
61         }
62 
63         /* 
64  * El descifrado cesar es el procedimiento inverso al cifrado
65  */
66         static string descifrar( string mensaje, int desplazamiento )
67         {
68             String cifrado = "";
69             if (desplazamiento > 0 && desplazamiento < abc.Length)
70             {                
71                 for (int i = 0; i < mensaje.Length; i++)
72                 {
73                     int posCaracter = getPosABC(mensaje[i]);
74                     if (posCaracter != -1) //el caracter existe en la variable abc
75                     {
76                         int pos = posCaracter - desplazamiento;
77                         while ( pos < 0 )
78                         {
79                             pos = pos + abc.Length;                            
80                         }
81                         cifrado += abc[pos];
82                     }
83                     else
84                     {
85                         cifrado += mensaje[i];
86                     }
87                 }
88 
89             }
90             return cifrado;
91         }
92 
93         /* obtiene la posicion del caracter pasado como parametro 
94  * en la variable abc que es nuestro abecedario de cifrado/descifrado
95  */
96         static int getPosABC( char caracter )
97         { 
98             for( int i=0; i< abc.Length ; i++)
99             {
100                 if (caracter == abc[i])
101                 {
102                     return i;
103                 }
104             }
105             return -1;
106         }
107 
108 
109     }
110 }

Para este ejemplo ciframos una frase de Stephen Hawking:

“Cada vez que escucho hablar de ese gato, empiezo a sacar mi pistola [en relación a la Paradoja de Schrödinger]

stephen hopkins

Salida en pantalla

cifrado c sharp

 

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Arrastrar y abrir archivo Excel

Arrastrar y abrir archivo Excel

En este post, crearemos una aplicación java que nos permita arrastrar un archivo excel hacia la aplicación, abrirlo y ca...

Procedimientos almacenados en java

Procedimientos almacenados en java

En este tuto realizaremos la implementación y ejecución de procedimientos almacenados de MySQL en Java, si quieres darle...

Blog MVC en PHP (Código Fuente)

Blog MVC en PHP (Código Fuente)

En este post dejo el código fuente de un blog en PHP desarrollado siguiendo el patrón de diseño MVC (Modelo, Vista y Con...

Proyecto Ascii Art (metodo de Black/white)

Proyecto Ascii Art (metodo de Black/white)

El Ascii Art o Arte Ascii, consiste en realizar dibujos con los caracteres ASCII (Código Americano Estándar de Intercamb...

Como hacer una factura en Java (Proyecto)

Como hacer una factura en Java (Proyecto)

Tiempo atras me pidieron un ejemplo de como realizar un reporte con iReport tipo factura, recibo o como le llamen, compl...

Borrar código protegido en Netbeans

Borrar código protegido en Netbeans

Cuando programamos visualmente desde Netbeans, el IDE nos ayuda mucho al generar rapidamente código predefinido, sin emb...

Comparte lo que sabes

Categorias

Últimas entradas

Si te gusta realizar tus propios memes o foto montajes pero tienes poca o nula experiencia en editores gráficos como Pho...

Los procedimientos almacenados no solo pueden retornar valores como números, cadenas, etc, sino también datos como los R...

XAMPP es un software para la gestión de base de datos, servidor web apache e interprete para lenguajes como php o perl....

En post anteriores vimos lo que son los parámetros IN y los parámetros OUT pero existe otro tipo de parámetro que es la...

Android Bolivia

MAUS