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

Ecuación de segundo grado

Ecuación de segundo grado

Problema: Implemente el código necesario en Kotlin para resolver una ecuación de segundo grado de números reales: Soluci...

Tabla para inventarios de Entradas y Salidas

Tabla para inventarios de Entradas y Salidas

A veces navegando en la internet buscando novedades , investigando o simplemente perdiendo el tiempo 🙂 se encuentran cos...

Búsqueda binaria (Binary Search)

Búsqueda binaria (Binary Search)

Un algoritmo de búsqueda binaria se emplea para buscar un valor en particular en un arreglo previamente ordenado. Para i...

Envía mensajes temporales y cifrados

Envía mensajes temporales y cifrados

Secret (https://getsecret.now.sh/) es una aplicación web gratuita que te permite enviar mensajes temporales cifrados que...

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...

Conexion Visual Basic a Firebird

Conexion Visual Basic a Firebird

En este tutorial nos conectaremos a una base de datos de Firebird utilizando el lenguaje de Visual Basic, el proyecto se...

Comparte lo que sabes

Categorias

Últimas entradas

En este post conoceremos algunos de los operadores de comparación que existen en Linux y realizaremos unos ejercicios pa...

En este post conocernos lo que son las Estructuras de Control IF en los script de Bash. Estas estructuras nos ayudan a c...

Todo producto tecnológico tiene un ciclo de vida, algunos bastante corto otros muy largo, podemos mencionar el software...

Cada versión de Linux viene con su propia terminal predeterminada para interactuar con el Sistema Operativo a través de...

Android Bolivia

MAUS