ich habe mein erstes "Programm" in PyCharm geschrieben. Eher durch Copy&Paste und viel zusammensuchen als wirklich programmieren. Ich hoffe ihr seht es mir nach, dass ich die Variante "Learning by doing" gewählt habe.
Das Programm ist ein GUI-Programm zur Verschlüsselung von HEVC-Dateien im MP4-Container. Es verwendet die Python-Bibliotheken tkinter, hashlib und cryptography.
Das GUI hat fünf Hauptkomponenten:
- Input-Dateiauswahl
- Passworteingabe mit einem Generieren-Button
- Ausgabeordnerauswahl
- Verschlüsselungs-Button
- Fortschrittsbalken
Wenn der Benutzer eine Datei auswählt, wird ihr Pfad in der Variable self.input_file_path gespeichert. Wenn der Benutzer einen Ausgabe-Ordner auswählt, wird der Pfad in der Variable self.output_folder_path gespeichert. Wenn der Benutzer ein Passwort eingibt oder auf die Schaltfläche "Generieren" klickt, wird das Passwort in der Variable self.password gespeichert.
Wenn der Benutzer auf den Verschlüsselungs-Button klickt, wird die encrypt-Methode aufgerufen. Diese Methode überprüft, ob die drei Variablen self.input_file_path, self.output_folder_path und self.password korrekt "befüllt" sind. Wenn eine dieser Variablen leer ist, wird eine Fehlermeldung angezeigt.
Wenn alle Variablen gültige Werte haben, wird das Passwort mit SHA-256 gehasht und in der Variable key gespeichert. Ein zufälliger Initialisierungsvektor wird erzeugt und in der Variable iv gespeichert. Der Name der Ausgabedatei wird aus dem Namen der Eingabedatei und der Erweiterung ".ccv" erzeugt und in der Variablen output_file_name gespeichert.
Die Eingabedatei wird zeilenweise gelesen und in Chunks von 64 KB verschlüsselt. Der verschlüsselte Chunk wird in die Ausgabedatei geschrieben. Die Verschlüsselung erfolgt mit dem AES-Algorithmus im CBC-Modus. Der Initialisierungsvektor wird als Parameter an den CBC-Modus übergeben.
So weit so gut. In PyCharm funktioniert alles wie es soll (außer ein kleiner "Anzeigefehler" wenn das Logging aktiviert ist).
Ich arbeite mit folgenden Modulen:
Code: Alles auswählen
import tkinter as tk
from tkinter import filedialog, messagebox
from tkinter import ttk
import os
import hashlib
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import random
import string
import logging
Jedoch startet der Verschlüsselungsprozess nicht. Es kommt folgender Fehler: ERROR - DLL load failed while importing _rust: Das angegebene Modul wurde nicht gefunden.
Ich kompiliere das Programm mit folgendem Code:
Code: Alles auswählen
pyinstaller --windowed --icon=icon.ico --add-data "img/icon.ico;img" --add-data "venv/Lib/site-packages/cryptography;cryptography" --add-data "venv/Lib/site-packages/cffi;cffi" --add-data "venv/Lib/site-packages/pycparser;pycparser" Encrypter.py
Ich hoffe ihr könnt mir helfen und bedanke mich jetzt schon im voraus für eure Mühen!