Correzione PEP8
This commit is contained in:
parent
ad9c548fc3
commit
3f59d3c9ee
@ -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
|
||||||
|
@ -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))
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user