2013-02-15 18:48:43 +01:00
|
|
|
from crittografia.numeri import *
max = 2**(16)
class codifica:
|
2012-12-25 23:19:52 +01:00
|
|
|
def __init__(self, valore):
|
|
|
|
valore = str(valore)
|
2013-07-13 23:47:37 +02:00
|
|
|
if valore.isnumeric():
|
|
|
|
self.numero = int(valore)
|
2013-01-05 01:20:04 +01:00
|
|
|
else: self.stringa = valore
|
2013-07-13 23:47:37 +02:00
|
|
|
def rot13(self):
rotazione = str.maketrans(
|
|
|
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
|
|
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"
|
|
|
|
)
return str.translate(self.stringa, rotazione)
def vigenère(self, verme):
cifrata = ""
for i in range(len(self.stringa)):
cifrata += chr((ord(self.stringa[i]) + ord(verme[i % len(verme)])) % max)
return cifrata
def gödel(self, primo):
cifrata = 1
sequenza = primi.lista(primo, len(self.stringa))
for i in range(len(self.stringa)):
cifrata *= sequenza[i]**(ord(self.stringa[i]) + 1)
return cifrata
def vernam(self, pad=()):
cifrata = ""
|
2013-02-15 18:48:43 +01:00
|
|
|
if pad is ():
|
2013-07-13 23:47:37 +02:00
|
|
|
pad = generatore.onetimepad(len(self.stringa))
for i in range(len(self.stringa)):
cifrata += chr((ord(self.stringa[i]) + pad[i]) % max)
return cifrata, pad
class decodifica:
|
2012-12-25 23:19:52 +01:00
|
|
|
def __init__(self, valore):
|
|
|
|
valore = str(valore)
|
2013-07-13 23:47:37 +02:00
|
|
|
if valore.isnumeric():
|
|
|
|
self.numero = int(valore)
|
|
|
|
else:
|
|
|
|
self.stringa = str(valore)
|
|
|
|
def rot13(self):
rotazione = str.maketrans(
|
|
|
|
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM",
|
|
|
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
|
|
)
return str.translate(self.stringa, rotazione)
def vigenère(self, verme):
decifrata = ""
for i in range(len(self.stringa)):
decifrata += chr((ord(self.stringa[i]) - ord(verme[i % len(verme)])) % max)
return decifrata
def gödel(self, primo, n):
decifrata = ""
for i in primi.lista(primo,n):
lettera = -1
while self.numero % i == 0:
self.numero /= i
lettera += 1
decifrata += chr(lettera % max)
return decifrata
def vernam(self, pad):
cifrata = ""
for i in range(len(self.stringa)):
cifrata += chr((ord(self.stringa[i]) - pad[i]) % max)
return cifrata
|