Bonjour, j'essaye de chiffrer et déchiffrer en AES plusieurs types de fichiers et la je bloque sur les images... Aucun problème pour la chiffrer, mais le déchiffrage ne fonctionne pas... j'ai l'impression qu'il me rechiffre l'image...
voila mon code pour chiffrer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 #!/usr/bin/python # -*- coding: utf-8 -*- from Crypto.Cipher import AES import re from PIL import Image aes = AES.MODE_CBC liste=[".JPG",".JPEG",".GIF",".ICO",".BMP",".DIB",".JPE",".PNG",".JFIF",".TIF",".TIFF"] def extension(text): ext = re.compile(r"(.[a-zA-Z0-9]+)$") if ext.search(text): return ext.search(text).group(0).upper() def FonctionCrypteurAES(fichiernoncrypt,fichiercryptAES,fichiercleAES): fichier = fichiernoncrypt fichier_code = fichiercryptAES fichier_cle = fichiercleAES exten = extension(fichiernoncrypt) exten2 = extension(fichier_code) fichier_coder = open(fichier_code,"wb") fichier_coder.close() cle = open(str(fichier_cle),"rb") key = cle.read() coder_aes = AES.new(str(key), aes) if not exten in liste : handler = open(str(fichier),"rb") a_coder = handler.read() handler.close() if (len(a_coder) % 16) != 0: n = 16 - (len(a_coder) % 16) for i in range(0, n): a_coder += '\0' motcrypte = coder_aes.encrypt(str(a_coder)) fichier_coder = open(str(fichier_code),"ab+") fichier_coder.write(str(exten)+"\n") fichier_coder.write(motcrypte) fichier_coder.close() else: input_image = Image.open(fichier) image_string = input_image.tostring() if (len(image_string) % 16) != 0: n = 16 - (len(image_string) % 16) for i in range(0, n): a_coder += '\0' encrypted = coder_aes.encrypt(str(image_string)) encrypted_img = Image.frombuffer("RGB", input_image.size, encrypted, 'raw',"RGB", 0, 1) if not exten2 in liste: encrypted_img.save(fichier_code, 'JPEG') os.remove(fichier_code) else : encrypted_img.save(fichier_code)
et celui pour déchiffrer :
si quelqu'un a une idée!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 #!/usr/bin/python # -*- coding: utf-8 -*- from Crypto.Cipher import AES import re import os from PIL import Image mode = AES.MODE_CBC liste=[".JPG",".JPEG",".GIF",".ICO",".BMP",".DIB",".JPE",".PNG",".JFIF",".TIF",".TIFF"] def fin_ligne(text): fin = re.compile(r"(.[a-zA-Z0-9]+){1}[\n\r]{0,2}") if fin.search(text): return fin.search(text).group(0) def extension(text): ext = re.compile(r"(.[a-zA-Z0-9]+)$") if ext.search(text): return ext.search(text).group(0).upper() def FonctionDecrypteurAES(fichiercryptAES,fichierdecryptAES,fichiercleAES): fichier = fichierdecryptAES fichier_code = fichiercryptAES fichier_cle = fichiercleAES exten = extension(fichier) fichier_decrypt = open(fichier,"wb") fichier_decrypt.close() handler = open(str(fichier_code),"rb") a_decoder = handler.read() handler.close() cle = open(str(fichier_cle),"rb") key = cle.read() decoder = AES.new(str(key), mode) if not exten in liste : fin = str(fin_ligne(a_decoder)) a_decoder2 = a_decoder.replace(str(fin),"") # if (len(a_decoder2) % 16) != 0: # n = 16 - (len(a_decoder2) % 16) # for i in range(0, n): # a_decoder2 += '\0' motdecrypte = decoder.decrypt(str(a_decoder2)) space = re.compile(r"[\0]+$") if space.search(str(motdecrypte)) : motdecrypte = motdecrypte.replace("\0",'') fichier_decrypt = open(str(fichier),"ab+") fichier_decrypt.write(motdecrypte) fichier_decrypt.close() else: input_image = Image.open(fichier_code) image_string = input_image.tostring() # if (len(image_string) % 16) != 0: # n = 16 - (len(image_string) % 16) # for i in range(0, n): # image_string += '\0' decrypted = decoder.decrypt(str(image_string)) space = re.compile(r"[\0]+$") if space.search(str(decrypted)) : decrypted = decrypted.replace("\0",'') decrypted_img = Image.frombuffer("RGB", input_image.size, decrypted, 'raw',"RGB", 0, 1) decrypted_img.save(fichier)
Merci
Partager