41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
|
|
from string import ascii_uppercase as maiuscole
|
|
|
|
def decifra(testo, rotazione = 5):
|
|
"""Decifra una stringa cifrata con algoritmo ROTx."""
|
|
|
|
# Preparo una variabile vuota per riportare il risultato
|
|
risultato = ''
|
|
|
|
# Eseguo tante istruzioni per ciascuna lettera del testo criptato
|
|
for i in testo.upper():
|
|
|
|
if not i in maiuscole:
|
|
# Se non è una lettera, riporto il risultato tale e quale
|
|
risultato = risultato + i
|
|
# Poi passo alla prossima lettera
|
|
continue
|
|
|
|
# Trovo l'indice della singola lettera
|
|
indice_c = maiuscole.index(i)
|
|
# Inverto la cifratura: se ho spostato in avanti di x, ora sposto
|
|
# indietro di x
|
|
parziale = indice_c - rotazione
|
|
|
|
# Se però l'indice parziale è meno di zero, correggo per farlo
|
|
# diventare un numero positivo.
|
|
if parziale < 0:
|
|
parziale = parziale + len(maiuscole)
|
|
|
|
# Infine, riporto la lettera spostata indietro
|
|
risultato = risultato + maiuscole[parziale]
|
|
|
|
# Riporto il risultato
|
|
return risultato
|
|
|
|
# Usare in questa maniera:
|
|
testo = 'HNFT F YZYYN!'
|
|
print decifra(testo, 5)
|