Sistemata line encoding

This commit is contained in:
Rnhmjoj 2013-07-15 15:34:50 +02:00
parent 05f8058ea1
commit 66af5e9be0
3 changed files with 158 additions and 23 deletions

View File

@ -1,26 +1,82 @@
from crittografia.numeri import * alfabeto = tuple("abcdefghijklmnopqrstuvwxyz") from crittografia.numeri import *
ordinale = dict([(k,i) for i,k in enumerate(alfabeto)]) class codifica:
alfabeto = tuple("abcdefghijklmnopqrstuvwxyz")
ordinale = dict([(k,i) for i,k in enumerate(alfabeto)])
class codifica:
def __init__(self, valore): def __init__(self, valore):
valore = str(valore) valore = str(valore)
if valore.isnumeric(): if valore.isnumeric():
self.numero = int(valore) self.numero = int(valore)
else: else:
self.stringa = valore self.stringa = valore
def rot13(self): rotazione = str.maketrans(
def rot13(self):
rotazione = str.maketrans(
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" "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): return str.translate(self.stringa, rotazione)
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 = "" def vigenère(self, verme):
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: 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): def __init__(self, valore):
valore = str(valore) valore = str(valore)
if valore.isnumeric(): self.numero = int(valore) if valore.isnumeric(): self.numero = int(valore)
else: self.stringa = str(valore) else: self.stringa = str(valore)
def rot13(self): rotazione = str.maketrans(
def rot13(self):
rotazione = str.maketrans(
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM", "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM",
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "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): return str.translate(self.stringa, rotazione)
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
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

View File

@ -1,12 +1,34 @@
import math, random, itertools, pyaudio opzioni = { import math, random, itertools, pyaudio
opzioni = {
"format": pyaudio.paFloat32, "format": pyaudio.paFloat32,
"channels": 2, "channels": 2,
"rate": 96000, "rate": 96000,
"input": True, "input": True,
"frames_per_buffer": 1024 "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() audio = pyaudio.PyAudio()
input = audio.open(**opzioni) input = audio.open(**opzioni)
dati = input.read(opzioni["rate"]//opzioni["frames_per_buffer"] * stop//2) dati = input.read(opzioni["rate"]//opzioni["frames_per_buffer"] * stop//2)
@ -17,4 +39,6 @@ import math, random, itertools, pyaudio opzioni = {
random.shuffle(dati) random.shuffle(dati)
for i in range(stop): for i in range(stop):
yield dati[i] 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))

View File

@ -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): def __init__(self, valore):
valore = str(valore) valore = str(valore)
if valore.isnumeric(): if valore.isnumeric():
self.numero = int(valore) self.numero = int(valore)
else: self.stringa = valore else: self.stringa = valore
def rot13(self): rotazione = str.maketrans(
def rot13(self):
rotazione = str.maketrans(
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" "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 (): 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): def __init__(self, valore):
valore = str(valore) valore = str(valore)
if valore.isnumeric(): if valore.isnumeric():
self.numero = int(valore) self.numero = int(valore)
else: else:
self.stringa = str(valore) self.stringa = str(valore)
def rot13(self): rotazione = str.maketrans(
def rot13(self):
rotazione = str.maketrans(
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM", "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM",
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "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