Commit iniziale con codice di base funzionante.

This commit is contained in:
Emiliano Vavassori 2018-02-22 21:23:11 +01:00
commit 4015b7bfc2
2 changed files with 62 additions and 0 deletions

22
cifra.py Normal file
View File

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

40
decifra.py Normal file
View File

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