Sistemata line encoding
This commit is contained in:
parent
05f8058ea1
commit
66af5e9be0
@ -1,26 +1,82 @@
|
||||
from crittografia.numeri import *
alfabeto = tuple("abcdefghijklmnopqrstuvwxyz")
|
||||
ordinale = dict([(k,i) for i,k in enumerate(alfabeto)])
class codifica:
|
||||
from crittografia.numeri import *
|
||||
|
||||
alfabeto = tuple("abcdefghijklmnopqrstuvwxyz")
|
||||
ordinale = dict([(k,i) for i,k in enumerate(alfabeto)])
|
||||
|
||||
class codifica:
|
||||
|
||||
def __init__(self, valore):
|
||||
valore = str(valore)
|
||||
if valore.isnumeric():
|
||||
self.numero = int(valore)
|
||||
else:
|
||||
self.stringa = valore
|
||||
def rot13(self):
rotazione = str.maketrans(
|
||||
|
||||
def rot13(self):
|
||||
rotazione = str.maketrans(
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"
|
||||
)
return str.translate(self.stringa, rotazione)
def vigenère(self, verme):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
cifrata = ""
for i in range(len(self.stringa)):
cifrata += alfabeto[(ordinale[self.stringa[i]] + ordinale[verme[i % len(verme)]]) % 26]
return cifrata
def gödel(self, primo):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
cifrata = 1
sequenza = primi.lista(primo, len(self.stringa))
for i in range(len(self.stringa)):
cifrata *= sequenza[i]**(ordinale[self.stringa[i]] + 1)
return cifrata
def vernam(self, pad=()):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
cifrata = ""
|
||||
if pad is ():
pad = generatore.onetimepad(len(self.stringa))
for i in range(len(self.stringa)):
cifrata += alfabeto[(ordinale[self.stringa[i]] + pad[i]) % 26]
return cifrata, pad
class decodifica:
|
||||
)
|
||||
return str.translate(self.stringa, rotazione)
|
||||
|
||||
def vigenère(self, verme):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
|
||||
cifrata = ""
|
||||
for i in range(len(self.stringa)):
|
||||
cifrata += alfabeto[(ordinale[self.stringa[i]] + ordinale[verme[i % len(verme)]]) % 26]
|
||||
return cifrata
|
||||
|
||||
def gödel(self, primo):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
|
||||
cifrata = 1
|
||||
sequenza = primi.lista(primo, len(self.stringa))
|
||||
for i in range(len(self.stringa)):
|
||||
cifrata *= sequenza[i]**(ordinale[self.stringa[i]] + 1)
|
||||
return cifrata
|
||||
|
||||
def vernam(self, pad=()):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
|
||||
cifrata = ""
|
||||
if pad is ():
|
||||
pad = generatore.onetimepad(len(self.stringa))
|
||||
for i in range(len(self.stringa)):
|
||||
cifrata += alfabeto[(ordinale[self.stringa[i]] + pad[i]) % 26]
|
||||
return cifrata, pad
|
||||
|
||||
class decodifica:
|
||||
|
||||
def __init__(self, valore):
|
||||
valore = str(valore)
|
||||
if valore.isnumeric(): self.numero = int(valore)
|
||||
else: self.stringa = str(valore)
|
||||
def rot13(self):
rotazione = str.maketrans(
|
||||
|
||||
def rot13(self):
|
||||
rotazione = str.maketrans(
|
||||
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM",
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
)
return str.translate(self.stringa, rotazione)
def vigenère(self, verme):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
decifrata = ""
for i in range(len(self.stringa)):
decifrata += (alfabeto[(ordinale[self.stringa[i]] - ordinale[verme[i % len(verme)]]) % 26])
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 += alfabeto[lettera % 26]
return decifrata
def vernam(self, pad):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
cifrata = ""
for i in range(len(self.stringa)):
cifrata += alfabeto[(ordinale[self.stringa[i]] - pad[i]) % 26]
return cifrata
|
||||
)
|
||||
return str.translate(self.stringa, rotazione)
|
||||
|
||||
def vigenère(self, verme):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
|
||||
decifrata = ""
|
||||
for i in range(len(self.stringa)):
|
||||
decifrata += (alfabeto[(ordinale[self.stringa[i]] - ordinale[verme[i % len(verme)]]) % 26])
|
||||
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 += alfabeto[lettera % 26]
|
||||
return decifrata
|
||||
|
||||
def vernam(self, pad):
|
||||
self.stringa = self.stringa.lower().replace(" ","")
|
||||
cifrata = ""
|
||||
for i in range(len(self.stringa)):
|
||||
cifrata += alfabeto[(ordinale[self.stringa[i]] - pad[i]) % 26]
|
||||
return cifrata
|
@ -1,12 +1,34 @@
|
||||
import math, random, itertools, pyaudio
opzioni = {
|
||||
import math, random, itertools, pyaudio
|
||||
|
||||
opzioni = {
|
||||
"format": pyaudio.paFloat32,
|
||||
"channels": 2,
|
||||
"rate": 96000,
|
||||
"input": True,
|
||||
"frames_per_buffer": 1024
|
||||
}
class primi:
def primo(n):
for i in range(3, int(math.sqrt(n)) + 1,2):
if n % i == 0:
|
||||
return False
return True
def prossimo(n):
if n % 2 == 0: n += 1
while True:
n += 2
if primi.primo(n):
|
||||
yield n
def lista(p, n):
return tuple([p for p in itertools.islice(primi.prossimo(p), n)])
class generatore:
def caso(inizio, fine, stop):
|
||||
}
|
||||
|
||||
class primi:
|
||||
|
||||
def primo(n):
|
||||
for i in range(3, int(math.sqrt(n)) + 1,2):
|
||||
if n % i == 0:
|
||||
return False
|
||||
return True
|
||||
|
||||
def prossimo(n):
|
||||
if n % 2 == 0: n += 1
|
||||
while True:
|
||||
n += 2
|
||||
if primi.primo(n):
|
||||
yield n
|
||||
|
||||
def lista(p, n):
|
||||
return tuple([p for p in itertools.islice(primi.prossimo(p), n)])
|
||||
|
||||
class generatore:
|
||||
|
||||
def caso(inizio, fine, stop):
|
||||
audio = pyaudio.PyAudio()
|
||||
input = audio.open(**opzioni)
|
||||
dati = input.read(opzioni["rate"]//opzioni["frames_per_buffer"] * stop//2)
|
||||
@ -17,4 +39,6 @@ import math, random, itertools, pyaudio
opzioni = {
|
||||
random.shuffle(dati)
|
||||
for i in range(stop):
|
||||
yield dati[i]
|
||||
def onetimepad(l):
return tuple(generatore.caso(0,2*16,l))
|
||||
|
||||
def onetimepad(l):
|
||||
return tuple(generatore.caso(0,2*16,l))
|
||||
|
@ -1,22 +1,77 @@
|
||||
from crittografia.numeri import *
max = 2**(16)
class codifica:
|
||||
from crittografia.numeri import *
|
||||
|
||||
max = 2**(16)
|
||||
|
||||
class codifica:
|
||||
|
||||
def __init__(self, valore):
|
||||
valore = str(valore)
|
||||
if valore.isnumeric():
|
||||
self.numero = int(valore)
|
||||
else: self.stringa = valore
|
||||
def rot13(self):
rotazione = str.maketrans(
|
||||
|
||||
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 = ""
|
||||
)
|
||||
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 = ""
|
||||
if pad is ():
|
||||
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:
|
||||
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:
|
||||
|
||||
def __init__(self, valore):
|
||||
valore = str(valore)
|
||||
if valore.isnumeric():
|
||||
self.numero = int(valore)
|
||||
else:
|
||||
self.stringa = str(valore)
|
||||
def rot13(self):
rotazione = str.maketrans(
|
||||
|
||||
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
|
||||
)
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user