"Datensave" mit pyAesCrypt
Verfasst: Mittwoch 18. November 2020, 09:37
Hallo zusammen,
ich habe eine Art "Datensave" mit Python gemacht, ich wollte allgemein mal eure Rückmeldungen dazu hören bzw. Verbesserungsvorschläge. Speziell beim Exceptionhandling bin ich mir fast sicher dass ich da einiges nicht beachtet habe.
ich habe eine Art "Datensave" mit Python gemacht, ich wollte allgemein mal eure Rückmeldungen dazu hören bzw. Verbesserungsvorschläge. Speziell beim Exceptionhandling bin ich mir fast sicher dass ich da einiges nicht beachtet habe.
Code: Alles auswählen
import pyAesCrypt
import pathlib
import getpass
import shutil
BUFFER_SIZE = 64 * 1024
FOLDER_PATH = pathlib.Path(r"C:\Users\xxx\Desktop\TEST")
ZIP_EXTENSION = '.zip'
AES_EXTENSION = '.aes'
def remove_directory(path):
for child in path.iterdir():
if child.is_file():
child.unlink()
else:
remove_directory(child)
path.rmdir()
def is_encrypted(path):
if path.with_suffix(AES_EXTENSION).is_file():
return True
elif path.is_dir():
return False
def encrypt_file(path, password):
shutil.make_archive(path, 'zip', path)
pyAesCrypt.encryptFile(path.with_suffix(ZIP_EXTENSION), path.with_suffix(AES_EXTENSION), password, BUFFER_SIZE)
path.with_suffix(ZIP_EXTENSION).unlink()
remove_directory(path)
def decypt_file(path, password):
pyAesCrypt.decryptFile(path.with_suffix(AES_EXTENSION), path.with_suffix(ZIP_EXTENSION), password, BUFFER_SIZE)
shutil.unpack_archive(path.with_suffix(ZIP_EXTENSION), path)
path.with_suffix(ZIP_EXTENSION).unlink()
path.with_suffix(AES_EXTENSION).unlink()
def main():
while True:
if FOLDER_PATH.exists():
if is_encrypted(FOLDER_PATH):
password = getpass.getpass("Dateien sind verschlüsselt, bitte das Passwort zum entschlüsseln eingeben: ")
try:
decypt_file(FOLDER_PATH, password)
except ValueError:
print("Falsches Passwort!")
else:
password = getpass.getpass("Dateien sind entschlüsselt, bitte das Passwort zum verschlüsseln eingeben: ")
try:
encrypt_file(FOLDER_PATH, password)
except FileNotFoundError:
print("Datei wurde nicht gefunden!")
else:
print("Der Pfad existiert nicht!")
break
if __name__ == "__main__":
main()