ich habe ein Tool geschrieben, mit dem man Dateien und Ordner AES verschlüsseln kann und es funktioniert soweit wie ich es mir vorstelle. Allerdings bin ich nicht wirklich sehr erfahren und wollte deshalb fragen ob sich jemand Zeit nehmen kann um mal über den Code drüber zu schauen und ggf. Verbesserungen/Hinweise rückmelden kann, da ich gleube ich einige Sachen sehr umständlich gemacht habe. Würde mich sehr freuen.
Code: Alles auswählen
import pyAesCrypt
import os
import getpass
import shutil
BUFFER_SIZE = 64 * 1024
def get_filename_and_password():
filename = input("Name der Datei: ")
password = getpass.getpass("Passwort: ")
return filename, password
def encrypt_file(filename, password):
try:
pyAesCrypt.encryptFile(filename, f"{filename}.aes", password, BUFFER_SIZE)
print("Datei erfolgreich verschlüsselt!")
if input("Soll die unverschlüsselte Ursprungsdatei gelöscht werden (j/n)?: ") == "j":
os.remove(filename)
print("Datei gelöscht!")
except OSError:
print("Datei nicht gefunden.")
def decrypt_file(filename, password):
try:
pyAesCrypt.decryptFile(filename, filename[:-4], password, BUFFER_SIZE)
print("Datei erfolgreich entschlüsselt!")
if input("Soll die verschlüsselte Ursprungsdatei gelöscht werden (j/n)?: ") == "j":
os.remove(filename)
print("Datei gelöscht!")
except ValueError:
print("Falsches Passwort!")
except OSError:
print("Datei nicht gefunden.")
def zip_and_encrypt_folder(filename, password):
try:
shutil.make_archive(filename, 'zip', ".", filename)
pyAesCrypt.encryptFile(f"{filename}.zip", f"{filename}.aes", password, BUFFER_SIZE)
print("Datei erfolgreich verschlüsselt!")
if input("Sollen die unverschlüsselten Ursprungsdateien gelöscht werden (j/n)?: ") == "j":
os.remove(f"{filename}.zip")
shutil.rmtree(filename)
print("Dateien gelöscht!")
except OSError:
print("Datei nicht gefunden.")
except FileNotFoundError:
print("Datei nicht gefunden.")
def decrypt_and_unzip_folder(filename, password):
try:
pyAesCrypt.decryptFile(filename, f"{filename[:-4]}.zip", password, BUFFER_SIZE)
shutil.unpack_archive(f"{filename[:-4]}.zip")
print("Archiv erfolgreich entpackt!")
if input("Sollen die verschlüsselten Ursprungsdateien gelöscht werden (j/n)?: ") == "j":
os.remove(f"{filename[:-4]}.zip")
os.remove(filename)
print("Dateien gelöscht!")
except ValueError:
print("Falsches Passwort!")
except OSError:
print("Datei nicht gefunden.")
def main():
auswahl = int(input("""
Was möchtest du tun?
1 - Datei verschlüsseln
2 - Datei entschlüsseln
3 - Ordner archivieren und verschlüsseln
4 - Ordner entpacken und entschlüsseln
>"""))
if auswahl == 1:
filename, password = get_filename_and_password()
encrypt_file(filename, password)
if auswahl == 2:
filename, password = get_filename_and_password()
decrypt_file(filename, password)
if auswahl == 3:
filename, password = get_filename_and_password()
zip_and_encrypt_folder(filename, password)
if auswahl == 4:
filename, password = get_filename_and_password()
decrypt_and_unzip_folder(filename, password)
if __name__ == '__main__':
main()