Archivo: Informática

El cifrado César

El cifrado César o por desplazamiento es una de las formas más simples de ocultar mensajes, aunque también una de las más fáciles de descifrar. El método no tiene más misterio que desplazar cada letra un número determinado de posiciones dentro del alfabeto de forma cíclica, es decir, si se llega al final se vuelve a empezar por el principio. Por ejemplo, con un desplazamiento de 3 posiciones a la derecha.

Alfabeto sin cifrar: ABCDEFGHIJKLMNÑOPQRSTUVWXYZ.
Alfabeto cifrado: DEFGHIJKLMNÑOPQRSTUVWXYZABC.

Texto sin cifrar: Estoy leyendo Okashini.
Texto cifrado: Hvwrb ohbhqgr Rndvklql.

El origen del cifrado lo encontramos hace más de 2.000 años. Corría el siglo I a.C cuando Julio César utilizó este cifrado con un desplazamiento de 3 posiciones a la derecha para ocultar mensajes en tiempos de guerra.

El descifrado es igual de sencillo si se conoce el número de desplazamientos que hay que realizar. Si no se conoce hay que trabajar algo más, aunque solamente habría que probar todas las combinaciones posibles, probando las primeras palabras hasta encontrar alguna frase coherente, y después traducir todo el texto. Podrían parecer demasiadas combinaciones, pero en el caso de nuestro alfabeto actual son solamente 27 posibilidades, pocas en comparación con otros cifrados. ¿Os imagináis que hubiera la misma cantidad que kanjis japoneses o hanzis chinos?

  • Vjkf vj le kvokf tzwiruf r kirmvj uvc dvkfuf Tvjri tfe 43 gfjztzfevj uv uvjgcrqrdzvekf r cr uvivtyr.

¿Podéis descifrarlo?

Como curiosidad, este cifrado se utiliza para otros más complejos como el de Vigenère.

¿Conocéis otros sistemas de cifrado?

Para los más técnicos, os dejo un programa en C++ que codifica textos.

// Cifrado César
// No se cifran letras con tilde, ñ, ç, ...
 
#include <iostream>
#include <string>
using namespace std;
 
void cesar(const string& s, int n) {
    for(int i = 0; i < s.size(); ++i) {
        char c = s[i];
        if(c >= 'a' and c <= 'z') {                         // Minúsculas
            if(c+n>'z') cout << char('a'+c+n-'z'-1);
            else cout << char(c+n);
        }
        else if(c >= 'A' and c <= 'Z') {                    // Mayúsculas
            if(c+n>'Z') cout << char('A'+c+n-'Z'-1);
            else cout << char(c+n);
        }
        else cout << c;
    }
}
 
int main() {
    int n;                  // Número de posiciones a desplazar
    cin >> n;
    n %= 26;
    string s;
    while(cin >> s) {
        cesar(s, n);
        cout << ' ';
    }
    cout << endl;
}

También te puede interesar...

Tags ,

Informática para tontos

Si piensas que los usuarios de tus programas son idiotas, sólo los idiotas usarán tus programas

Linus Torvalds, ingeniero de Software finlandés y creador del primer kernel de GNU/Linux

También te puede interesar...

Tags ,

Gamers

WASD vs Cursores WASD vs Cursores

Aún recuerdo cuando jugaba a juegos como el Doom en nuestro flamante Pentium 100 con Windows 95 instalado por Flopy (Disquetes). En ‘aquellos tiempos’, todos los juegos a los que jugaba se manejaban con los cursores (venían así predeterminados). A medida que pasaba el tiempo, muchos juegos empezaron a controlarse con las famosas teclas WASD, en otros se podía jugar de las dos formas, mientras que los demás seguían con los famosos cursores.

¿Llegará el día en que morirá alguno de los dos luchadores? Y vosotros, ¿cuál preferís?

También te puede interesar...

Tags , , ,

Humor Unix

Hazme un sandwich ¿QUÉ? Hazlo tú Sudo Hazme un sandwich Vale

Para que el que no lo entienda, sudo es un comando para ejecutar comandos con privilegio de superusuario

También te puede interesar...

Tags , , , ,

El progreso de la tecnología de la información

Os dejo un vídeo sobre el avance tecnológico de hoy y el del futuro, muy interesante.

También te puede interesar...

Tags , ,