La scacchiera di Polibio è un sistema di cifratura non utilizzato tanto per la crittografia ma per lo scambio dei messaggi a distanza.
In questo algoritmo non ci sono delle formule matematiche ma tutto rotea in una matrice 5×5 (5 righe e 5 colonne) dove sono inserite le lettere dell’alfabeto da sinistra a destra a partire dalla prima riga(la K e la Q stanno nella stessa casella).
Ogni lettera del messaggio da codificare viene condificato da due numeri il primo quello della riga il secondo quello della colonna.
Qui di seguito c’è il codice scritto in python che codifica e decodifica il messaggio inserito dall’utente.
import string
riga0=['A','B','C','D','E']
riga1=['F','G','H','I','J']
riga2=['KQ','L','M','N','O']
riga3=['P','R','S','T','U']
riga4=['V','W','X','Y','Z']
scelta=0
scacchiera=[riga0,riga1,riga2,riga3,riga4]
def menu():
print"1-Codifica"
print"2-Decodifica"
print"3-Esci"
return raw_input("--->>>")
def Codifica():
frase=raw_input("Inserisci frase: ")
frase=list(frase)
cod=""
for lettera in frase:
lettera=string.upper(lettera)
for riga in scacchiera:
try:
pos=riga.index(lettera)
num=str(scacchiera.index(riga))+str(pos)
cod=cod+num+" "
except ValueError:
pass
print "La codifica e': ",cod
def Decodifica():
frase=raw_input("Inserisci codice da decodificare: ")
frase=string.split(frase,' ')
cod=""
for i in frase:
riga=scacchiera[int(i[0])]
cod=cod+riga[int(i[1])]
print cod
#---Main---#
while(scelta!="3"):
scelta=menu()
if (scelta=="1"):
Codifica()
elif(scelta=="2"):
Decodifica()
