Código Polibio




Rostro de  escultura de Polibio, 
Viena, Austria


Polibio fue un historiador griego (208 a. C. - 126 a. C.). Enviado como rehén a Roma historió los hechos de ese país. Es considerado uno de los maestros del relato historicofilosófico por su Historia general de Roma.

Polibio nació en Megalópolis, Grecia, y fue deportado a Roma luego de la conquista de su lugar natal. Escribió la primera gran historia apologética de los romanos. Prontamente apareció en los circuitos aristocráticos de los Escipión, ilustre familia patricia de la Antigua Roma.


En su libro Historias hace mención al Método de cifrado atribuido a sus contemporáneos Cleoxeno y Democleto, basado en coordenadas. Aunque parece ser que la historia ha querido atribuir la invención del método a Polibio.
Se sustituye el valor alfabético por el de dos cifras que corresponden al de una tabla previamente fabricada.
El alfabeto griego utilizado inicialmente esta compuesto de 24 letras, con lo cual, la tabla de coordenadas contiene 5 columnas y 5 líneas. Políbio propuso utilizar la 25 coordenada como inicio y final de una transmisión.
En el alfabeto latino, existen 26 letras por lo cual una misma coordenada se utiliza para dos letras. La tabla de coordenadas mas común es la que cuenta con K/Q en la misma coordenada (semejanza de sonidos) pero, también existe alguna en la que se utiliza la misma coordenada para I/J.







Polibio aparece en los libros de Criptografía como el inventor de un procedimiento para escribir las letras como pares de números. Mediante una tabla se hace corresponder a cada carácter de un alfabeto de 25 letras un par de números. La tabla de Polibio tiene la forma siguiente:


12345
1ABCDE
2FGHI/JK
3LMNOP
4QRSTU
5VWXYZ


Por ejemplo, la palabra Polibio se escribiría 35 34 31 24 12 24 34.




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Codigo_Polibio
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string textoentrada;

private void button1_Click(object sender, EventArgs e)
{
textoentrada = textBox1.Text;

Dictionary<string, string> polibio = new Dictionary<string, string>
{
{"a","11" }, {"b","12" }, {"c","13" }, {"d","14" }, {"e","15" },
{"f","21" }, {"g","22" }, {"h","23" }, {"i","24" }, {"j","24" },
{"k","25" }, {"l","31" }, {"m","32" }, {"n","33" }, {"o","34" },
{"p","35" }, {"q","41" }, {"r","42" }, {"s","43" }, {"t","44" },
{"u","45" }, {"v","51" }, {"w","52" }, {"x","53" }, {"y","54" },
{"z","55" },
};
foreach (char letra in textoentrada)
{
string resultado = polibio[letra.ToString()].Trim();
textBox2.AppendText(resultado);
}
}

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void button3_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
}
}

}






Puede también utilizarse la tabla de Polibio para convertir en números un alfabeto desordenado previamente por medio de una palabra clave. Por ejemplo, si usamos para cifrar el alfabeto la palabra MUESCA, resultaría:


12345
1MUESC
2ABDFG
3HI/JKLN
4OPQRT
5VWXYZ


Polibio no concibió la tabla como un modo de escritura secreta sino como un medio de comunicarse a distancia por medio de antorchas, como una especie de telégrafo primitivo. En las prisiones de la Rusia zarista se utilizaba para comunicarse, mediante golpes en las paredes, una tabla similar a la de Polibio pero de seis números para poder contener el alfabeto cirílico.

La tabla de Polibio tiene tres características muy interesantes desde el punto de vista de la criptografía:


En primer lugar sirve para transformar los caracteres alfabéticos en números lo que hace posible aplicar posteriormente transformaciones de tipo aritmético.

En segundo lugar permite reducir el número de caracteres de 25 a 5 lo que puede hacer más sencilla la transmisión del mensaje.

Finalmente, a cada carácter le hace corresponder dos cifras que pueden ser manipuladas separadamente mediante técnicas de transposición.

Una de las técnicas de cifrado que utilizan como paso previo la tabla de Polibio es la cifra bífida del criptógrafo francés Félix-Marie Delastelle. Cada par de letras se cifra mediante una tabla de Polibio y se ponen sus coordenadas en columna. Por ejemplo, para cifrar el par tu con la tabla anterior:

tu
41O
52W


Como el par (4,1) se corresponde con la letra O y el par (5,2) con la letra W, las dos letras tu se cifran como OW. El cifrado de Delastelle es autorecíproco, es decir, el procedimiento de cifrado es el mismo que el de descifrado.

Mediante el formulario siguiente se puede cifrar un mensaje por medio de la tabla de Polibio que se quiera. Hay que rellenar el alfabeto de cifrado teniendo cuidado de no incluir la letra J. A los efectos de la Tabla de Polibio, la I y la J son la misma letra. Se puede marcar la casilla correspondiente para obtener el cifrado de Delastelle. El mensaje cifrado por este último procedimiento se puede descifrar con este mismo formulario pues, como hemos dicho, el cifrado de Delastelle es autorecíproco.

El cifrado de Delastelle se hace por pares de letras (es digráfico). Por eso, el número de letras del texto a cifrar debe ser par. Si es impar, se le añadirá una letra antes de comenzar el cifrado. Pero esto es otra historia.


A poco que se investiga encontrado todo tipo de tablas de Polibio de 5x5, de 6x6, con numeros y con letras. Vete a saber que es la que realmente utilizaría nuestro amigo Polibio. En el programa he utilizado las letras "i" y "j" con el mismo código. En cualquier caso es fácilmente modificable.














No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.