Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import string
- import time
- import os
- import sys
- def cls():
- os.system(['clear','cls'][os.name == 'nt'])
- cls()
- def restart_program():
- python = sys.executable
- os.execl(python, python, * sys.argv)
- class Cifrario:
- Stringa = ""
- ListaTesto = []
- ListaChiave = []
- Alfabeto = string.ascii_uppercase
- def RiempiListaNumeri(self, stringa):
- lista = []
- for i in self.Stringa:
- numero = self.Alfabeto.index(i)
- lista.append(numero)
- self.Lista = lista
- def Crypt(self):
- crypt = []
- crypted = []
- for i in range(0, len(testo.Filtered)):
- crypt.append((self.ListaTesto[i]+self.ListaChiave[i])%26)
- for N in crypt:
- crypted.append(self.Alfabeto[N])
- stampa = ''.join(crypted)
- self.Crypted = stampa
- print self.Crypted
- def Decrypt(self):
- decrypt = []
- decrypted = []
- for i in range(0, len(testo.Filtered)):
- decrypt.append((self.ListaTesto[i]-self.ListaChiave[i])%26)
- for N in decrypt:
- decrypted.append(self.Alfabeto[N])
- stampa = ''.join(decrypted)
- self.Decrypted = stampa
- print self.Decrypted
- class FiltraStringhe:
- DaFiltrare = ""
- def Filtra(self, stringa):
- applica_filtro1 = ''.join(e for e in self.DaFiltrare if e.isalnum())
- applica_filtro2 = applica_filtro1.upper()
- self.Filtered = applica_filtro2
- def AdattaChiave(self):
- resto = len(testo.Filtered)%len(chiave.Filtered)
- divisione = len(testo.Filtered)/len(chiave.Filtered)
- chiave_var = chiave.Filtered
- if resto > 0:
- giuntura = chiave_var[0:resto]
- chiave_var = chiave_var*divisione+giuntura
- elif resto <= 0:
- chiave_var = chiave_var*divisione
- self.Adattata = chiave_var
- print ( ' ___________________________________________ ' )
- print ( ' | _ _ __ _ |' )
- print ( ' | | \ | | / _| | |' )
- print ( ' | | \| | __ _| |_| |_ __ _ |' )
- print ( ' | | |/ _ | _| __/ _ | |' )
- print ( ' | | |\ | (_| | | | || (_| | |' )
- print ( ' | ______|_| \_|\__|_|_| \__\__|_|_______ |' )
- print ( ' | |_______________________________________| |' )
- print ( ' | |' )
- print ( ' | Cifrario di Vigenere |' )
- print ( ' | |' )
- print ( ' | ZaIXBlNFYtNHFOEsUS |' )
- print ( ' |___________________________________________|' )
- print ( '' )
- print ( '' )
- print ( ' Scegliere tra le opzioni disponibili.')
- print ( '' )
- print ( ' 1) Crypta.' )
- print ( ' 2) Decrypta. ' )
- print ( ' 3) Esci.' )
- print ( '' )
- opzione = int(input ( " Opzione: "))
- print ""
- if opzione == 3:
- quit()
- if (opzione <= 0) or (opzione > 3):
- cls()
- print ( '' )
- print ( ' Scelta non valida' )
- print ( '' )
- print ( ' Hehehe VsSHTFoMTrQCMhOFeFguZbJKfEoRHNrTtMHEEJ!!!' )
- time.sleep(2)
- cls()
- restart_program()
- main()
- if (opzione == 1) or (opzione == 2):
- # input testo e chiave
- testo_immesso = raw_input ( "Testo da cifrare: " )
- print ""
- chiave_immessa = raw_input ( "Chiave cifratura: " )
- print ""
- # ripulisce testo e chiave da caratteri speciali e li muta in maiuscolo
- testo = FiltraStringhe()
- testo.DaFiltrare = testo_immesso
- testo.Filtra(testo.DaFiltrare)
- chiave = FiltraStringhe()
- chiave.DaFiltrare = chiave_immessa
- chiave.Filtra(chiave.DaFiltrare)
- # tronca o allunga la chiave ripetendola in base al rapporto
- # tra lunghezza chiave e lunghezza testo
- chiave.AdattaChiave()
- # converte i caratteri delle stringhe contenenti chiave e testo
- # da alfabetiche a numeriche, inserendoli poi in due liste distinte
- num_testo = Cifrario()
- num_testo.Stringa = testo.Filtered
- num_testo.RiempiListaNumeri(num_testo.Stringa)
- num_chiave = Cifrario()
- num_chiave.Stringa = chiave.Adattata
- num_chiave.RiempiListaNumeri(num_testo.Stringa)
- # istanzia un oggetto della classe cifrario per poterne usare i metodi
- Cifra = Cifrario()
- Cifra.ListaTesto = num_testo.Lista
- Cifra.ListaChiave = num_chiave.Lista
- # usa il metodo crypta o il metodo decrypta della classe cifrario
- if opzione == 1:
- Cifra.Crypt()
- if opzione == 2:
- Cifra.Decrypt()
- cls()
- print 'Testo cifrato: '
- print ( '' )
- if opzione == 1:
- print ( ' "' ), Cifra.Crypted , ( '" ' )
- if opzione == 2:
- print ( ' "' ), Cifra.Decrypted, ( '" ' )
- print ( '' )
- raw_input( 'Premere invio per continuare...' )
- restart_program()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement