Invitaciones crípticas

02 Feb 2005

En mi hay una estrecha relación entre las obligaciones que tengo y las cosas que se me pasan por la cabeza para hacer… Es triste, pero así es.

Por ejemplo, ayer debía haber pasado todo el día estudiando Sistemas de Radio pero dediqué bastante rato (una hora y media o algo así) a ver páginas de antenas (de donde salió el post de ayer) con sus tipos, teorias radioeléctricas, programas de simulación etc… Y los apuntes en otra mesa ahí debían estar esperando “este tarda mucho, ¿no?”.

Y ayer también dediqué desde las 12 a las 3 de la tarde y desde las 11 a las 2 de la mañana a hacer programitas para encriptar texto. Es una técnica que tenía pensada desde hace muuuuucho tiempo y seguramente sea fácil de romper pero como es una idea casi infantil pues quería hacerla. La última vez que me puse con ella fue el año pasado yendo a Francia en tren y escribí el código en c en un papel que por supuesto perdí.

La técnica es sencilla y ayer la termine de cuajar:

Sea un texto a encriptar. Sea una clave elegida por el usuario y de longitud n1. Sea una tabla de caracteres de longitud n2.

Por cada caracter del texto:

Se busca en la tabla de caracteres; si no está se deja tal cual; si está se hace lo siguiente:

Trabajaremos cada vez con un caracter de la clave, rotando si llegamos al final (cuando el texto sea mayor que la clave).

Dadas las posiciones de los caracteres del texto y de la clave en la tabla, el caracter de salida será el que esté en la posición (posicion_texto + posicion_clave), siguiendo por el principio si la posición resultante es mayor que la longitud de la tabla.

Fin de iteración.

Para desencriptar sólo hay que restar en vez de sumar las posiciones.

Bueno, es muy sencillo y estoy seguro de que ya se le había ocurrido a alguien y está implementado. Pero como ya dije, se me ocurrió de pequeño y tenía ganas de hacerlo. Para mí es lo suficientemente seguro ya que el método que he usado sólo lo conozco yo, esto es, no vale (espero) ninguna herramienta kiddie que haya por ahí. Además la clave es doble: la tabla y tu clave, ya que si cambias la tabla (desordenándola o algo así) la salida cambiará.

Lo que más tardé fue en hacer las opciones del ejecutable, en posibilitar que genere contraseñas al azar, etc… Que es lo que hice por la noche.

El problema es que hacía algunos meses que no tocaba C y claro: la primera hora estás loco con la aritmética de punteros y eso pero te haces a ella. Me gustaría pasar el algoritmo a una clase Java, a ver si lo hago cuando tenga un poco más de tiempo. Mi idea es utilizar el programa como filtro en un Unix mediante tuberías.

El uso que ya le estoy dando es el de encriptar el nombre del cosas en el eMule porque si no mi hermana ya está dando la coña con las cosas que me bajo.

Y ahora un par de ofrecimientos: el código del programa si alguien lo quiere se lo mando (tras un poco de limpieza de código, que tenía mucho sueño y creo que los comentarios son dos y de una línea) para lo que quiera. Compila en gcc, pero supongo que en VisualC también.

Y que tengo 6 invitaciones de GMail, ya sé que a estas alturas todo el mundo tiene una cuenta allí pero… Si no encuentras “invitador” y quieres una cuenta pues comenta (toma pareado).