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]
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]«
Salida en pantalla
En un post anterior vimos la forma de conectarnos a una base de datos Access con C#, pero de nada nos sirve solo conecta[...]
En esta oportunidad aprovechando el interés que tienen ahora los superheroes de Marvel, crearemos un formulario de logue[...]
Desde que se crearon los videojuegos para computadora, el espacio de almacenamiento y memoria han sido siempre un proble[...]
Problema: Escriba un programa en java que permita dibujar con el mouse cuadrados, círculos y triángulos. El usuario debe[...]
En este tutorial realizaremos un proyecto web de un «sitio multi lenguaje» o «web multi idiomas» como prefieran llamarlo[...]
Java Excel API es un API para java que permite a los desarrolladores leer y escribir en hojas de cálculo Excel. jexcelap[...]