Ich habe einen Programm geschrieben das Dateien Ver und Entschlüsselt.
Meine probleme sind folgende.
1. wie kann ich den Hintergrund von root_Tab, Tab1 und Tab2 auf weiss setzen?
2. wie kann ich Salz_Ausgabe so konfigurieren dass er die ausgabe markieren und kopieren kann?
Ich googelte schon viel, aber ich wurde nicht fündig. Ich probierte auch schon vieles, aber nichts ging.
Ich sah nur noch die möglichkeit hier zu fragen.
Ich hoffe ihr könnt mir helfen.
Liebe Grüsse Fire Spike.
Code: Alles auswählen
import base64
import os
import binascii
import tkinter as tk
from tkinter import ttk
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
def generiere_Schlüssel_entschlüsseln(pw, salt):
Passwort = pw.encode()
salt = binascii.unhexlify(salt)
kdf = PBKDF2HMAC(algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend()
)
schlüssel = base64.urlsafe_b64encode(kdf.derive(Passwort))
return schlüssel
def generiere_Schlüssel_verschlüsseln(pw):
global Salz_Ausgabe
Passwort = pw.encode()
salt = os.urandom(16)
salt_hex = binascii.hexlify(salt)
Salz_Ausgabe.config(text=salt_hex, fg="orange")
kdf = PBKDF2HMAC(algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend()
)
schlüssel = base64.urlsafe_b64encode(kdf.derive(Passwort))
return schlüssel
def verschlüsseln(pw, Dateipfad):
schlüssel = generiere_Schlüssel_verschlüsseln(pw)
f = Fernet(schlüssel)
with open(Dateipfad, "rb") as Datei:
with open(Dateipfad + ".verschluesselt", "wb") as Datei_verschlüsselt:
Datei_verschlüsselt.write(f.encrypt(Datei.read()))
def entschlüsseln(pw, Dateipfad, salt):
schlüssel = generiere_Schlüssel_entschlüsseln(pw, salt)
f = Fernet(schlüssel)
with open(Dateipfad, "rb") as Datei:
Pfad, Dateiname = os.path.splitext(Dateipfad)
Dateiname.split(".")
del Dateiname[-1]
Dateiname = " ".join(Dateiname)
with open(Pfad + Dateiname + ".entschluesselt", "wb") as Datei_entschlüsselt:
Datei_entschlüsselt.write(f.decrypt(Datei.read()))
def main():
global Salz_Ausgabe
root = tk.Tk()
root.title("Dateien ent/verschlüsseln")
root.config(bg="white")
root_Tab = ttk.Notebook(root)
Tab1 = ttk.Frame(root_Tab)
Tab2 = ttk.Frame(root_Tab)
root_Tab.add (Tab1, text="Entschlüsseln")
root_Tab.add (Tab2, text="Verschlüsseln")
root_Tab.pack(expand=1, fill='both')
Info1 = tk.Label(Tab1, text="Wichtig: Die Datei wird mit einer zusätzlichen\n Dateiendung gespeichert. Nicht überschrieben!\n", bg="white")
Dateipfad_Text1 = tk.Label(Tab1, text="Bitte Dateipfad angeben", bg="white")
Dateipfad_Eingabe1 = tk.Entry(Tab1, bg="white")
Passwort_Text1 = tk.Label(Tab1, text="Bitte Passwort eingeben", bg="white")
Passwort_Eingabe1 = tk.Entry(Tab1, bg="white")
Salz_Ausgabe = tk.Label(Tab2, text="...", bg="white")
Salz_Ausgabe.grid(row=3, column=1, sticky=tk.W)
Entschlüsseln = tk.Button(Tab1, text="entschlüsseln", command=lambda: entschlüsseln(Passwort_Eingabe1.get(), Dateipfad_Eingabe1.get(), Salz_Eingabe.get()), bg="white")
Verschlüsseln = tk.Button(Tab2, text="verschlüsseln", command=lambda: verschlüsseln(Passwort_Eingabe2.get(), Dateipfad_Eingabe2.get()), bg="white")
Salz_Text1 = tk.Label(Tab1, text="Bitte Salz eingeben", bg="white")
Salz_Text2 = tk.Label(Tab2, text="Dieses Salz wird in der entschlüsselung verwendet: ", bg="white")
Salz_Eingabe = tk.Entry(Tab1, bg="white")
Info2 = tk.Label(Tab2, text="Wichtig: Die Datei wird mit einer zusätzlichen\n Dateiendung gespeichert. Nicht überschrieben!\n", bg="white")
Dateipfad_Text2 = tk.Label(Tab2, text="Bitte Dateipfad angeben", bg="white")
Dateipfad_Eingabe2 = tk.Entry(Tab2, bg="white")
Passwort_Text2 = tk.Label(Tab2, text="Bitte Passwort eingeben", bg="white")
Passwort_Eingabe2 = tk.Entry(Tab2, bg="white")
Info1.grid(row=0, columnspan=1, sticky=tk.W)
Dateipfad_Text1.grid(row=1, column=0, sticky=tk.W)
Dateipfad_Eingabe1.grid(row=1, column=1, sticky=tk.W)
Passwort_Text1.grid(row=2, column=0, sticky=tk.W)
Passwort_Eingabe1.grid(row=2, column=1, sticky=tk.W)
Info2.grid(row=0, columnspan=1, sticky=tk.W)
Dateipfad_Text2.grid(row=1, column=0, sticky=tk.W)
Dateipfad_Eingabe2.grid(row=1, column=1, sticky=tk.W)
Passwort_Text2.grid(row=2, column=0, sticky=tk.W)
Passwort_Eingabe2.grid(row=2, column=1, sticky=tk.W)
Entschlüsseln.grid(row=4, columnspan=1, sticky=tk.W)
Verschlüsseln.grid(row=4, columnspan=1, sticky=tk.W)
Salz_Text2.grid(row=3, column=0, sticky=tk.W)
Salz_Text1.grid(row=3, column=0, sticky=tk.W)
Salz_Eingabe.grid(row=3, column=1, sticky=tk.W)
root.mainloop()
if __name__ == "__main__":
main()