La scacchiera di Polibio

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()

Scacchiera di Polibio

Annunci

Una Risposta to “La scacchiera di Polibio”

  1. smshot Says:

    da paura! un codice cosi pensato a suo tempo… davvero geniale 🙂


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: