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

Crea tu lector de códigos QR

Crea tu lector de códigos QR

En este post desarrollaremos una aplicación que nos permitirá leer un código QR y capturar la información que contiene y...

Código de Control v7 en JavaScript

Código de Control v7 en JavaScript

En esta oportunidad, se deja a disposición de la comunidad de programadores de Bolivia y también porque no, del que quie...

Rompecabezas con forma irregular

Rompecabezas con forma irregular

En este post vemos una manera de como crear un juego de rompecabezas en java sin el uso de java2d, ademas, las piezas de...

Agregar tablas a los items de un JComboBox

Agregar tablas a los items de un JComboBox

En este post personalizaremos un componente JComboBox para que sus elementos acepten tablas (JTable) en lugar de texto s...

Cargar fuente TTF

Cargar fuente TTF

Cuando realizamos un proyecto java utilizando fuentes de nuestro sistema, al momento de distribuir el programa y ejecuta...

Crea presentaciones Power Point desde Java

Crea presentaciones Power Point desde Java

Apache POI es la API de Java para el trabajo con archivos de Microsoft como son Word, Excel y Power Point. Apache POI se...

Comparte lo que sabes

Categorias

Últimas entradas

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...

Herramientas

Generador de Enlaces a Whatsapp