martes, 24 de diciembre de 2019

24- Cifrado: comunicación por dibujos

Para hoy, he preparado una variante de un cifrado que se utiliza con frecuencia, para mandar no sólo texto sino también imágenes. Yo lo llamo "comunicación por dibujos", aunque es posible que tenga algún otro nombre.

En primer lugar, dibujamos un rectángulo cuyos lados midan números primos. Por ejemplo, 3x5. Normalmente, el lado más corto se suele colocar en vertical; sin embargo, es posible que en algún caso esto no se cumpla (y si al descifrar no sale nada inteligible, deberemos probar de la otra manera).

Y, ahora que tenemos el rectángulo, procedemos a dibujar en él nuestro mensaje. Recuerda que puede ser una letra, un texto o un dibujo. Por ejemplo,


Hemos dibujado una H. Aquí es donde difiere el método clásico del que empleo yo. La forma clásica es "describir" lo que se ve, es decir, ir leyendo por filas y diciendo "blanco" o "negro" según el color de la casilla. En nuestro ejemplo, sería "blanco, negro, blanco, negro, blanco, blanco, negro, negro, negro, blanco,..." Normalmente, se utiliza un 0 para representar "blanco" y un 1 para "negro". Así, quedaría 0101001110...

Mi método es parecido, pero consiste en agrupar las casillas del mismo color. Siempre habrá una alternancia entre blanco y negro, así que no tenemos que especificar el color, únicamente el número de casillas seguidas hasta que haya un cambio. En nuestro ejemplo, hay 1 blanca, 1 negra, 1 blanca, 1 negra, 2 blancas (se junta con la de la siguiente línea), 3 negras, 2 blancas, 1 negra, 1 blanca, 1 negra y 1 blanca. Y escribiríamos 11112321111. El único problema de esto es que no especificamos el color de la primera casilla y podemos acabar con el "negativo" del dibujo, pero como sólo hay dos colores, podremos leer igualmente el mensaje.

Nota: si se dan muchas casillas seguidas del mismo color y pasamos de 10, deberemos especificarlo añadiendo un guión entre los dos dígitos, para que no se confundan con dos grupos distintos.

Nota: si el mensaje es largo, podemos partirlo en varios rectángulos de diferentes tamaños.

Veamos ahora cómo descifrar un mensaje con este cifrado. Lo primero de todo es sumar todos los números y así hallaremos el número total de casillas del rectángulo, es decir, su área. Como los lados son números primos, no tendremos problema en descomponer ese número y encontrar las dos longitudes. Así, podremos dibujar el rectángulo y volver a dibujar mediante las alternancias el mensaje secreto.

Aquí tienes otro ejemplo un poco más largo para que practiques: podría escribir
312212111112113221-53112131231121312313,
32323144111214111432321114111412113211123211 y
1311313331213131113121313111131313131-8 en vez de JDELCASTILLO.

En esta ocasión, no te dejo jugar con un programita en JavaScript, porque requiere toma de decisiones (¿cómo, de todas las opciones posibles, elijo dibujar mi mensaje y en cuántos rectángulos?, ¿qué representa este dibujo que he descifrado?) Tengo, sin embargo, la parte intermedia, el paso del rectángulo a la lista de números y viceversa, por si alguien está interesado.

¿Sabrías descifrar el siguiente mensaje?

31111211114145431

Pista: es sencillito y tiene algo que ver con este post.

No hay comentarios:

Publicar un comentario