Archivo para la categoría “Informática”

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;
}
Etiquetas: ,

Comments Sin comentarios »

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

Etiquetas: ,

Comments Sin comentarios »

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í predetermiados). 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?

Etiquetas: , , ,

Comments Sin comentarios »

sandwich1

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

Etiquetas: , , , ,

Comments 2 Comentarios »

¿Sabías qué…? es un vídeo sobre el avance tecnológico de hoy y el del futuro, muy interesante.

Etiquetas: , ,

Comments Sin comentarios »

El juego de la vida es, según la Wikipedia, un ejemplo de aútomata celular, y uno de los orígenes de la vida artificial. La aplicación consiste en la relación de diferentes ‘células’ que siguen unas sencillas normas, dependiendo de la situación, la célula desaparecerá, duplicará, etc. La situación puede acabar de 3 maneras diferentes: situación estable (las células no se mueven ni se destruyen), destrucción de todas las células, o creación de un sistema con movimiento o bucle.

Enlaces relacionados:

|Jugar al juego de la vida

Etiquetas: , ,

Comments Sin comentarios »

Hoy os traigo un vídeo sobre el inferno de los programadores. Están en la calle, con carteles de cartón como si estubieran pidiendo.

Por si no sabéis ingles, os traduzco los carteles, por orden.

- Estoy dolido.
- Llevamos 4 meses en un programa de 5 y he recibido los requisitos finales ayer (y han vuelto a cambiar!)
- Gasto la mitad de mi día en reuniones de como trabajar mejor (en vez de trabajar).
- Mi jefe leyó en una revista que los programadores usando (otro) lenguaje de programación eran dos veces más productivos, así que compró una copia y cortó por la mitad el programa (lo destrozó).
- Cada día mi jefe cambia de opinión sobre lo que estamos programando.
- La gente no para de decirme que les arregle el correo, así que no tengo tiempo para programar-
- Mi padre no tiene más tiempo para mi.
- Le dijeron a mi jefe que podían hacer nuestra siguiente versión en la mitad de tiempo y por la mitad de dinero, él les creyó, pero ahora han gastando todo su presupuesto y todo el tiempo y…
- está aun a la mitad. Ahora se han ido y su código es un desastre, tenemos que arreglarlo y aacabar lo que empezaron.

Etiquetas: , ,

Comments Sin comentarios »