Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / c++ / Visual Studio / Cifrado del Cesar en C Sharp

Cifrado del Cesar en C Sharp

Por 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

Artículos similares

«Hola Mundo» en kotlin con Eclipse

Kotlin es un lenguaje de programación de tipado estático que corre sobre la máquina virtual de Java y que también puede[...]

Simulador de Urna Electrónica en java

Hola 🙂 en esta ocasión un amigo del Brasil nos envía un proyecto java de una Urna Electrónica o Voto Electronico, desarr[...]

Conexión a base de datos Oracle con Laravel

En esta ocasión aprenderemos a conectaros con una base de datos Oracle desde Laravel. Es un tutorial sencillo y cortito,[...]

Ordenación de burbuja animado

La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Este algoritmo es esencialmen[...]

Validar documentos XML con esquema XSD

Un esquema XSD se utiliza para describir y validar la estructura y contenido de los datos de un documento XML. Un esquem[...]

Autenticación de usuarios bajo el patrón MVC

MVC es un patrón de arquitectura de software que separa una aplicación en tres componentes lógicos principales.  Estos s[...]