Enjoy!
################################################
- Code: Select all
import random
import os
import string
class Cardano:
def __init__(self):
self.versione = "0.1"
self.input = ""
self.lunghezza = ""
self.griglia = []
self.distanza = []
def start(self):
while 1:
os.system("clear")
print """
1 - Cripta
2 - Decripta
3 - Exit
"""
scelta = raw_input("\n> ")
if scelta == "1":
self.crypt()
elif scelta == "2":
self.decrypt()
elif scelta == "3":
break
else:
print "\n Errore, re-inserisci scelta!"
def crypt(self):
self.input = raw_input("\nScrivimi la frase da criptare: ")
self.calculate()
self.filename = raw_input("Nome del file in cui salvare la griglia: ")
self.keyname = raw_input("Nome del file in cui salvare la chiave: ")
self.file()
def calculate(self):
if self.input=="":
raise SystemExit
self.input=self.input.split(" ")
a = ""
for obj in self.input:
a+=obj
self.input = string.lower(a)
for obj in self.input:
if ord(obj)<97 or ord(obj)>122:
raise SystemExit
lunghezza = (len(a)*len(a))+random.randrange(0,5)
for obj in range(lunghezza*lunghezza):
self.griglia.append(chr(random.randrange(97,122)))
while 1:
self.distanza=[]
Errore=False
pos=0
for obj in self.input:
pos = random.randrange(pos+1, (len(self.griglia)/len(self.input))+pos)
if pos>len(self.griglia): Errore=True
self.distanza.append(pos)
if not Errore:
break
c=0
for obj in self.input:
self.griglia[self.distanza[c]] = obj
c+=1
def decrypt(self):
self.f2d = raw_input("\n Inserire file con la griglia: ")
self.k2d = raw_input("\n Inserire file con la chiave: ")
try:
file=open(self.f2d, "r")
except:
print "Non trovo il file con la griglia!"
raise SystemExit
try:
file2=open(self.k2d, "r")
except:
print "Non trovo il file con la chiave!"
raise SystemExit
try:
a = eval(file.read())
except:
print "\n File griglia corrotto!"
raise SystemExit
try:
b = eval(file2.read())
except:
print "\n File chiave corrotto!"
raise SystemExit
stringa=""
for obj in b:
stringa+=a[obj]+" "
print "\nLa frase è: "+stringa
raw_input("\n Premi INVIO per continuare")
def file(self):
try:
file=open(self.filename, "w")
file.write(str(self.griglia))
file.close()
file=open(self.keyname, "w")
file.write(str(self.distanza))
file.close()
print "File Scritto con successo!"
except:
print "Errore! File non scritto!"
raw_input("\n Premi INVIO per continuare")
exe = Cardano()
exe.start()


