Codice per le dimostrazioni del Linux Winter Day 2018.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.2 KiB

#!/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:
if __name__ == '__main__':
testo = 'HNFT F YZYYN!'
print(decifra(testo, 6))