commit 4015b7bfc2cd6c6eee25aa85d86eea6e618fdc6c Author: Emiliano Vavassori Date: Thu Feb 22 21:23:11 2018 +0100 Commit iniziale con codice di base funzionante. diff --git a/cifra.py b/cifra.py new file mode 100644 index 0000000..1a489dc --- /dev/null +++ b/cifra.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# encoding: utf-8 + +import string, sys + +def cifra(testo, rotazione = 5): + risultato = '' + for i in testo.upper(): + if not i in string.ascii_uppercase: + risultato = risultato + i + continue + indice_c = string.ascii_uppercase.index(i) + parziale = indice_c + rotazione + if parziale > len(string.ascii_uppercase): + parziale = parziale % len(string.ascii_uppercase) + + risultato += string.ascii_uppercase[parziale] + + return risultato + +if __name__ == '__main__': + print cifra(sys.argv[1].upper(), 5) diff --git a/decifra.py b/decifra.py new file mode 100644 index 0000000..82c269f --- /dev/null +++ b/decifra.py @@ -0,0 +1,40 @@ +#!/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)