Hilfe bei AES Verschlüsselung mit Crypto
Verfasst: Sonntag 10. Januar 2016, 07:12
Hallo,
Ich kenne mich leider so gar nicht mit Verschlüsselung aus, brauche aber ein Script um Dateien verschlüsseln zu können. Ich hab im Internet diesen Code hier aufgegriffen:
Naja auf jeden Fall scheint damit was nicht zu stimmen, denn wenn ich damit beispielsweise eine Audio- oder Videodatei verschlüssel und wieder entschlüssel, ist die Datei danach beschädigt.
Abgesehen davon würde ich den Dateizugriff (schreiben / lesen) gerne seperat machen... ich will eigentlich nur zwei Funktionen haben, die Binärdaten (binär eingelesene Datei-Inhalte oder halt binäre Strings) ver- bzw entschlüsseln.
Könnt ihr mir da weiter helfen? Ich hab zwar schon einiges über Verschlüsselung gelesen, aber ich bekomme es alleine nicht hin.
Vielen Dank im Vorraus.
Gruß, Gondii
Ich kenne mich leider so gar nicht mit Verschlüsselung aus, brauche aber ein Script um Dateien verschlüsseln zu können. Ich hab im Internet diesen Code hier aufgegriffen:
Code: Alles auswählen
import os
from Crypto.Cipher import AES
from Crypto.Hash import SHA256
from Crypto import Random
def encrypt(self, key, infile_name, outfile_name):
chunksize = 64*1024
outputFile = outfile_name
filesize = str(os.path.getsize(infile_name)).zfill(16)
IV = Random.new().read(16)
encryptor = AES.new(key, AES.MODE_CBC, IV)
with open(infile_name, 'rb') as infile:
with open(outputFile, 'wb') as outfile:
outfile.write(filesize.encode('utf-8'))
outfile.write(IV)
while True:
chunk = infile.read(chunksize)
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += b' ' * (16 - (len(chunk) % 16))
outfile.write(encryptor.encrypt(chunk))
def decrypt(self, key, infile_name, outfile_name):
chunksize = 64*1024
with open(infile_name, 'rb') as infile:
filesize = int(infile.read(16))
IV = infile.read(16)
decryptor = AES.new(key, AES.MODE_CBC, IV)
with open(outfile_name, 'wb') as outfile:
while True:
chunk = infile.read(chunksize)
if len(chunk) == 0:
break
outfile.write(decryptor.decrypt(chunk))
outfile.truncate(filesize)
def get_key(self, password):
hasher = SHA256.new(password.encode('utf-8'))
return hasher.digest()
Abgesehen davon würde ich den Dateizugriff (schreiben / lesen) gerne seperat machen... ich will eigentlich nur zwei Funktionen haben, die Binärdaten (binär eingelesene Datei-Inhalte oder halt binäre Strings) ver- bzw entschlüsseln.
Könnt ihr mir da weiter helfen? Ich hab zwar schon einiges über Verschlüsselung gelesen, aber ich bekomme es alleine nicht hin.
Vielen Dank im Vorraus.
Gruß, Gondii