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
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! :)
Necesitamos: Android Studio 2 tipos de fuente TTF Agregar Archivo de fuente al proyecto Paso 1: Crear carpeta assets Cli...
Hace tiempo pidieron un video tutorial sobre como crear sus propios componentes swing java, lamentablemente debo decir q...
Si te gusta realizar tus propios memes o foto montajes pero tienes poca o nula experiencia en editores gráficos como Pho...
Existen varias aplicaciones (free y de pago) que emulan una impresora virtual para generar archivos en PDF (Portable Do...
PHP cuenta con la función mail que nos permite el envío de correo desde nuestro servidor web bool mail ( string $to , st...
PlaceHolder: PlaceHolder es un atributo propio de HTML5 y es el texto que aparece dentro de un campo de texto (un JTextF...
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
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...