Add DocString

This commit is contained in:
Félix MARQUET
2022-03-21 10:55:46 +01:00
parent 0b8f78d3bd
commit 8163345157
4 changed files with 33629 additions and 33627 deletions

Binary file not shown.

View File

@@ -28,14 +28,14 @@ def chiffrementAffineByte(data: bytes, keya: int, keyb: int) -> bytes:
alphabet = [] alphabet = []
for i in range(256): for i in range(256):
alphabet.append(i) alphabet.append(i)
x=alphabet.index(int.from_bytes(data, "little")) x = alphabet.index(int.from_bytes(data, "little"))
y=(keya*x+keyb)%256 y = (keya*x+keyb)%256
return bytes([alphabet[y]]) return bytes([alphabet[y]])
def inverse(a): def inverse(a):
""" Renvoie l'inverse du module de a et x par 256 """ Renvoie l'inverse du module de a et x par 256
""" """
x=0 x = 0
while (a*x%256 != 1): while (a*x%256 != 1):
x += 1 x += 1
return x return x
@@ -46,10 +46,10 @@ def dechiffrementAffineByte(data: bytes, keya: int, keyb: int) -> bytes:
alphabet = [] alphabet = []
for i in range(256): for i in range(256):
alphabet.append(i) alphabet.append(i)
x=alphabet.index(int.from_bytes(data, "little")) x = alphabet.index(int.from_bytes(data, "little"))
y=(inverse(keya)*(x-keyb))%256 y = (inverse(keya)*(x-keyb))%256
return bytes([alphabet[y]]) return bytes([alphabet[y]])
def decryptByteFile(filenameIn: str, keya: int, keyb: int, filenameOut = 'result') -> None: def decryptByteFile(filenameIn: str, keya: int, keyb: int, filenameOut = 'result') -> None:
""" Ecrit dans filenameOut, filenameIn décrypté avec le chiffrement affine """ Ecrit dans filenameOut, filenameIn décrypté avec le chiffrement affine
@@ -69,7 +69,7 @@ def byteFreq(filenameIn: str) -> dict:
""" byteDict est un dictionnaire tel que """ byteDict est un dictionnaire tel que
* une clé est un octet * une clé est un octet
* la valeur associée est la fréquence de ce octet. * la valeur associée est la fréquence de ce octet.
Met à jour byteDict avec la liste de octets lbyte. Met à jour byteDict avec la liste de octets lbyte.
""" """
lbyte = [] lbyte = []
@@ -97,13 +97,15 @@ def sortbyteFreq(byteFreq : dict) -> list:
while k < len(byteList): while k < len(byteList):
i = k i = k
while i > 0 and byteList[i - 1][1] < byteList[i][1]: while i > 0 and byteList[i - 1][1] < byteList[i][1]:
byteList[i - 1], byteList[i] = byteList[i], byteList[i - 1] byteList[i - 1], byteList[i] = byteList[i], byteList[i - 1]
i = i - 1 i = i - 1
k = k + 1 k = k + 1
return byteList return byteList
def findKeywrite(data: bytes, dataout: bytes, filenameOut = 'result'): def findKeywrite(data: bytes, dataout: bytes, filenameOut = 'result'):
"""Ecrit dans filenameOut les couples de clé possible pour que data soit égale à dataout.
"""
createFile(filenameOut) createFile(filenameOut)
fdout = open(filenameOut, "w") fdout = open(filenameOut, "w")
for keya in range(1, 256): for keya in range(1, 256):
@@ -119,6 +121,8 @@ def findKeywrite(data: bytes, dataout: bytes, filenameOut = 'result'):
fdout.write("\n") fdout.write("\n")
def findKeyList(data: bytes, dataout: bytes): def findKeyList(data: bytes, dataout: bytes):
"""Renvoie la liste des couples de clé possible pour que data soit égale à dataout.
"""
L = [] L = []
for keya in range(1, 256): for keya in range(1, 256):
if keya % 2 != 0: if keya % 2 != 0:
@@ -130,31 +134,9 @@ def findKeyList(data: bytes, dataout: bytes):
return L return L
def comparKey(L: list, M: list) -> tuple: def comparKey(L: list, M: list) -> tuple:
"""Compare les couples de clé valeur et renvoie le couple commun aux 2 listes M et L.
"""
for i in range(len(L)): for i in range(len(L)):
for y in range(len(M)): for y in range(len(M)):
if L[i] == M[y]: if L[i] == M[y]:
return L[i] return L[i]
#Jeu de test
#print(sortbyteFreq(byteFreq("data")))
#findKeywrite(b'\xaa', b'\x20', "keyoutspace")
#findKeywrite(b'\x31', b'\x65', "keyoute")
#print(findKeyList(b'\xaa', b'\x20'))
print(comparKey(findKeyList(b'\xaa', b'\x20'), findKeyList(b'\x31', b'\x65')))
#cryptByteFile('tescrypt.txt', 1, 3, "resulttest2")
#cryptByteFile('data', 1, 3, 'resultcryptdata')
#cryptByteFile('monkey.jpg', 1, 3)
#decryptByteFile('resulttest2', 1, 3, "decryptresult2")
#decryptByteFile('resultcryptdata', 1, 3, 'resultdecryptdata')
decryptByteFile('data', 91, 74, "decrptdatatest")
#cryptByteFile('enemy-from-the-series-arcane-league-of-legends.mp3', 45, 76, 'enemyCrypted')
#decryptByteFile('enemyCrypted', 45, 76, 'enemyDeCyted.mp3')
#nmb d'octet de e et code (b'x65')
#nmb d'octet de espace et code (b'x20')
#nmb d'octet de . et code (b'x2e')
# \x20 -> \xaa

File diff suppressed because it is too large Load Diff

20
jeudetest.py Normal file
View File

@@ -0,0 +1,20 @@
from chiffrement_affine import *
print(sortbyteFreq(byteFreq("data")))
#findKeywrite(b'\xaa', b'\x20', "keyoutspace")
#findKeywrite(b'\x31', b'\x65', "keyoute")
#print(findKeyList(b'\xaa', b'\x20'))
print(comparKey(findKeyList(b'\xaa', b'\x20'), findKeyList(b'\x31', b'\x65')))
#cryptByteFile('tescrypt.txt', 1, 3, "resulttest2")
#cryptByteFile('data', 1, 3, 'resultcryptdata')
#cryptByteFile('monkey.jpg', 1, 3)
#decryptByteFile('resulttest2', 1, 3, "decryptresult2")
#decryptByteFile('resultcryptdata', 1, 3, 'resultdecryptdata')
decryptByteFile('data',
comparKey(findKeyList(b'\xaa', b'\x20'), findKeyList(b'\x31', b'\x65'))[0],
comparKey(findKeyList(b'\xaa', b'\x20'), findKeyList(b'\x31', b'\x65'))[1],
"dataDecrypted")
#cryptByteFile('enemy-from-the-series-arcane-league-of-legends.mp3', 45, 76, 'enemyCrypted')
#decryptByteFile('enemyCrypted', 45, 76, 'enemyDeCyted.mp3')