Correzione PEP8

This commit is contained in:
Rnhmjoj 2013-08-25 20:06:00 +02:00
parent ad9c548fc3
commit 3f59d3c9ee
3 changed files with 81 additions and 75 deletions

View File

@ -1,23 +1,24 @@
from .numeri import * from .numeri import *
alfabeto = tuple("abcdefghijklmnopqrstuvwxyz") alfabeto = tuple("abcdefghijklmnopqrstuvwxyz")
ordinale = dict([(k,i) for i,k in enumerate(alfabeto)]) ordinale = dict([(k, i) for i, k in enumerate(alfabeto)])
class codifica: class codifica:
def __init__(self, valore): def __init__(self, valore):
""" """
Inizializzazione Inizializzazione
Fornire una stringa da crittografare. Fornire una stringa da crittografare.
""" """
self.stringa = valore self.stringa = valore
def rot13(self): def rot13(self):
""" """
Cifrario ROT13 Cifrario ROT13
""" """
rotazione = str.maketrans( rotazione = str.maketrans(
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"
) )
return str.translate(self.stringa, rotazione) return str.translate(self.stringa, rotazione)
@ -25,96 +26,97 @@ class codifica:
def vigenère(self, verme): def vigenère(self, verme):
""" """
Cifrario di vigenère Cifrario di vigenère
Fornire una chiave alfabetica di lunghezza Fornire una chiave alfabetica di lunghezza
minore della stringa. (verme) minore della stringa. (verme)
""" """
self.stringa = self.stringa.lower().replace(" ","") self.stringa = self.stringa.lower().replace(" ", "")
cifrata = "" cifrata = ""
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
cifrata += alfabeto[(ordinale[self.stringa[i]] + ordinale[verme[i % len(verme)]]) % 26] cifrata += alfabeto[(ordinale[lettera] + ordinale[verme[i % len(verme)]]) % 26]
return cifrata return cifrata
def gödel(self, primo): def gödel(self, primo):
""" """
Numero di Gödel Numero di Gödel
Specificare un numero primo di partenza. Specificare un numero primo di partenza.
""" """
self.stringa = self.stringa.lower().replace(" ","") self.stringa = self.stringa.lower().replace(" ", "")
cifrata = 1 cifrata = 1
sequenza = primi.lista(primo, len(self.stringa)) sequenza = primi.lista(primo, len(self.stringa))
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
cifrata *= sequenza[i]**(ordinale[self.stringa[i]] + 1) cifrata *= sequenza[i] ** (ordinale[lettera] + 1)
return cifrata return cifrata
def vernam(self, pad=()): def vernam(self, pad=()):
""" """
Cifrario di Vernam Cifrario di Vernam
Se non si fornisce un one-time-pad ne viene generato Se non si fornisce un one-time-pad ne viene generato
uno in automatico. uno in automatico.
""" """
self.stringa = self.stringa.lower().replace(" ","") self.stringa = self.stringa.lower().replace(" ", "")
cifrata = "" cifrata = ""
if pad is (): if pad is ():
pad = generatore.onetimepad(len(self.stringa)) pad = generatore.onetimepad(len(self.stringa))
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
cifrata += alfabeto[(ordinale[self.stringa[i]] + pad[i]) % 26] cifrata += alfabeto[(ordinale[lettera] + pad[i]) % 26]
return cifrata, pad return cifrata, pad
class decodifica: class decodifica:
def __init__(self, valore): def __init__(self, valore):
""" """
Inizializzazione Inizializzazione
Fornire una stringa o un numero (di gödel) da decrittografare. Fornire una stringa o un numero (di gödel) da decrittografare.
""" """
if str(valore).isnumeric(): if str(valore).isnumeric():
self.numero = valore self.numero = valore
else: else:
self.stringa = valore self.stringa = valore
def rot13(self): def rot13(self):
""" """
Cifrario ROT13 Cifrario ROT13
""" """
rotazione = str.maketrans( rotazione = str.maketrans(
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM", "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM",
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
) )
return str.translate(self.stringa, rotazione) return str.translate(self.stringa, rotazione)
def vigenère(self, verme): def vigenère(self, verme):
""" """
Cifrario di vigenère Cifrario di vigenère
Fornire la chiave usata per crittografare la stringa. (verme) Fornire la chiave usata per crittografare la stringa. (verme)
""" """
self.stringa = self.stringa.lower().replace(" ","") self.stringa = self.stringa.lower().replace(" ", "")
decifrata = "" decifrata = ""
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
decifrata += (alfabeto[(ordinale[self.stringa[i]] - ordinale[verme[i % len(verme)]]) % 26]) decifrata += (alfabeto[(ordinale[lettera] - ordinale[verme[i % len(verme)]]) % 26])
return decifrata return decifrata
def gödel(self, primo, n): def gödel(self, primo, n):
""" """
Numero di Gödel Numero di Gödel
Specificare un numero primo di partenza e Specificare un numero primo di partenza e
la lunghezza della stringa. la lunghezza della stringa.
""" """
decifrata = "" decifrata = ""
for i in primi.lista(primo,n): for i in primi.lista(primo, n):
lettera = -1 lettera = -1
while self.numero % i == 0: while self.numero % i == 0:
self.numero /= i self.numero /= i
lettera += 1 lettera += 1
decifrata += alfabeto[lettera % 26] decifrata += alfabeto[lettera % 26]
return decifrata return decifrata
def vernam(self, pad): def vernam(self, pad):
""" """
Cifrario di Vernam Cifrario di Vernam
Fornire il one-time-pad usato per crittografare la stringa. Fornire il one-time-pad usato per crittografare la stringa.
""" """
self.stringa = self.stringa.lower().replace(" ","") self.stringa = self.stringa.lower().replace(" ", "")
cifrata = "" cifrata = ""
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
cifrata += alfabeto[(ordinale[self.stringa[i]] - pad[i]) % 26] cifrata += alfabeto[(ordinale[lettera] - pad[i]) % 26]
return cifrata return cifrata

View File

@ -9,37 +9,39 @@ opzioni = {
"frames_per_buffer": 1024 "frames_per_buffer": 1024
} }
class primi: class primi:
def primo(n): def primo(n):
""" """
Restituisce True se n è primo altrimenti restituisce False. Restituisce True se n è primo altrimenti restituisce False.
""" """
for i in range(3, int(math.sqrt(n)) + 1,2): for i in range(3, int(math.sqrt(n)) + 1, 2):
if n % i == 0: if n % i == 0:
return False return False
return True return True
def prossimo(n): def prossimo(n):
""" """
Restituisce il più piccolo numero primo maggiore di n. Restituisce il più piccolo numero primo maggiore di n.
[Generatore] [Generatore]
""" """
if n % 2 == 0: if n % 2 == 0:
n += 1 n += 1
while True: while True:
n += 2 n += 2
if primi.primo(n): if primi.primo(n):
yield n yield n
def lista(p, n): def lista(p, n):
""" """
Restituisce una n-tupla con i numeri primi maggiori di p. Restituisce una n-tupla con i numeri primi maggiori di p.
""" """
return tuple([p for p in itertools.islice(primi.prossimo(p), n)]) return tuple([p for p in itertools.islice(primi.prossimo(p), n)])
class generatore: class generatore:
def caso(inizio, fine, n): def caso(inizio, fine, n):
""" """
Restituisce n interi casuali nell'intervallo [inizio; fine). Restituisce n interi casuali nell'intervallo [inizio; fine).
@ -47,11 +49,11 @@ class generatore:
""" """
audio = pyaudio.PyAudio() audio = pyaudio.PyAudio()
input = audio.open(**opzioni) input = audio.open(**opzioni)
dati = input.read(opzioni["rate"]//opzioni["frames_per_buffer"] * n//2) dati = input.read(opzioni["rate"] // opzioni["frames_per_buffer"] * n // 2)
input.close() input.close()
audio.terminate() audio.terminate()
dati = [i for i in dati if i != 0] dati = [i for i in dati if i != 0]
dati = [i for i in dati if i in range(inizio,fine)] dati = [i for i in dati if i in range(inizio, fine)]
random.shuffle(dati) random.shuffle(dati)
for i in range(n): for i in range(n):
yield dati[i] yield dati[i]
@ -60,4 +62,4 @@ class generatore:
""" """
Ritorna una l-tupla di interi casuali per un one-time-pad. Ritorna una l-tupla di interi casuali per un one-time-pad.
""" """
return tuple(generatore.caso(0,2*16,l)) return tuple(generatore.caso(0, 2 * 16, l))

View File

@ -1,37 +1,38 @@
from .numeri import * from .numeri import *
max = 2**(16) max = 2 ** 16
class codifica: class codifica:
def __init__(self, valore): def __init__(self, valore):
""" """
Inizializzazione Inizializzazione
Fornire una stringa da crittografare. Fornire una stringa da crittografare.
""" """
self.stringa = valore self.stringa = valore
def rot13(self): def rot13(self):
""" """
Cifrario ROT13 Cifrario ROT13
""" """
rotazione = str.maketrans( rotazione = str.maketrans(
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"
) )
return str.translate(self.stringa, rotazione) return str.translate(self.stringa, rotazione)
def vigenère(self, verme): def vigenère(self, verme):
""" """
Cifrario di vigenère Cifrario di vigenère
Fornire una chiave alfabetica di lunghezza Fornire una chiave alfabetica di lunghezza
minore della stringa. (verme) minore della stringa. (verme)
""" """
cifrata = "" cifrata = ""
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
cifrata += chr((ord(self.stringa[i]) + ord(verme[i % len(verme)])) % max) cifrata += chr((ord(lettera) + ord(verme[i % len(verme)])) % max)
return cifrata return cifrata
def gödel(self, primo): def gödel(self, primo):
""" """
Numero di Gödel Numero di Gödel
@ -39,10 +40,10 @@ class codifica:
""" """
cifrata = 1 cifrata = 1
sequenza = primi.lista(primo, len(self.stringa)) sequenza = primi.lista(primo, len(self.stringa))
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
cifrata *= sequenza[i]**(ord(self.stringa[i]) + 1) cifrata *= sequenza[i] ** (ord(lettera) + 1)
return cifrata return cifrata
def vernam(self, pad=()): def vernam(self, pad=()):
""" """
Cifrario di Vernam Cifrario di Vernam
@ -52,63 +53,64 @@ class codifica:
cifrata = "" cifrata = ""
if pad is (): if pad is ():
pad = generatore.onetimepad(len(self.stringa)) pad = generatore.onetimepad(len(self.stringa))
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
cifrata += chr((ord(self.stringa[i]) + pad[i]) % max) cifrata += chr((ord(lettera) + pad[i]) % max)
return cifrata, pad return cifrata, pad
class decodifica: class decodifica:
def __init__(self, valore): def __init__(self, valore):
""" """
Inizializzazione Inizializzazione
Fornire una stringa o un numero (di gödel) da decrittografare. Fornire una stringa o un numero (di gödel) da decrittografare.
""" """
if str(valore).isnumeric(): if str(valore).isnumeric():
self.numero = valore self.numero = valore
else: else:
self.stringa = valore self.stringa = valore
def rot13(self): def rot13(self):
""" """
Cifrario ROT13 Cifrario ROT13
""" """
rotazione = str.maketrans( rotazione = str.maketrans(
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM", "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM",
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
) )
return str.translate(self.stringa, rotazione) return str.translate(self.stringa, rotazione)
def vigenère(self, verme): def vigenère(self, verme):
""" """
Cifrario di vigenère Cifrario di vigenère
Fornire la chiave usata per crittografare la stringa. (verme) Fornire la chiave usata per crittografare la stringa. (verme)
""" """
decifrata = "" decifrata = ""
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
decifrata += chr((ord(self.stringa[i]) - ord(verme[i % len(verme)])) % max) decifrata += chr((ord(lettera) - ord(verme[i % len(verme)])) % max)
return decifrata return decifrata
def gödel(self, primo, n): def gödel(self, primo, n):
""" """
Numero di Gödel Numero di Gödel
Specificare un numero primo di partenza e Specificare un numero primo di partenza e
la lunghezza della stringa. la lunghezza della stringa.
""" """
decifrata = "" decifrata = ""
for i in primi.lista(primo,n): for i in primi.lista(primo, n):
lettera = -1 lettera = -1
while self.numero % i == 0: while self.numero % i == 0:
self.numero /= i self.numero /= i
lettera += 1 lettera += 1
decifrata += chr(lettera % max) decifrata += chr(lettera % max)
return decifrata return decifrata
def vernam(self, pad): def vernam(self, pad):
""" """
Cifrario di Vernam Cifrario di Vernam
Fornire il one-time-pad usato per crittografare la stringa. Fornire il one-time-pad usato per crittografare la stringa.
""" """
cifrata = "" cifrata = ""
for i in range(len(self.stringa)): for i, lettera in enumerate(self.stringa):
cifrata += chr((ord(self.stringa[i]) - pad[i]) % max) cifrata += chr((ord(lettera) - pad[i]) % max)
return cifrata return cifrata