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

Camara de Seguridad por Internet (LiveCam)

Existen muchas camaras de seguridad por internet algunas protegidas por contraseña pero la mayoria no, utilizando el hac[...]

CODOTA: Programación Inteligente

La Inteligencia Artificial (AI – Artificial Intelligence) estará presente en casi cada aspecto de nuestra vida en[...]

Crear ventana de ayuda sin JavaHelp

Java Help es (o era) una librería para java que permitía añadir ventanas de ayuda HTML a nuestros proyectos, al ser una[...]

Minimizar aplicación al SystemTray/Bandeja del Sistema

El SystemTray/Bandeja del Sistema o como también se le llama «Área de Notificación» es la sección de la barra de tareas[...]

Ejercicios sencillos en C Sharp

Lenguaje: C# Nivel: Básico 1) Se desea desarrollar un programa que permita introducir una oración por teclado y contar l[...]

Crea un servicio web REST con PHP y MYSQL

Servicio Web Un servicio web (en inglés, Web Service o Web services) es una tecnología que utiliza un conjunto de protoc[...]