2017-10-14 10 views
0

Ich versuche eine Funktion zu erstellen, die gpg -c verwendet, um eine Datei über ein Eingabefeld in tkinter zu verschlüsseln. Mein Problem ist, dass gpg -c den Benutzer auffordert, ein Passwort zweimal über das Terminal einzugeben.Tkinter python 3 - GPG-Verschlüsselung

Ich kann den Befehl ausführen, aber es erfordert Eingabe über Terminal. Ist es möglich, eine Variable oder einen Platzhalter zu verwenden, den ich mit dem Befehl kombinieren kann? Auf diese Weise ist kein Terminal erforderlich. Oder gibt es Alternativen?

Zum Beispiel hier ist die normale Befehlszeile:

gpg -c test.txt 
Enter passphrase: ***********  
Repeat passphrase: *********** 

Antwort

0

Anstatt das GPG Kommandozeilen-Tool zu verwenden, wäre es besser, die Python-gnupg Bibliothek verwenden hier gefunden: https://pythonhosted.org/python-gnupg wo die Verschlüsselung und Signatur etwas aussehen würde wie folgt (von der docs airlifted):

    :

    >>> encrypted_data = gpg.encrypt(data, recipients, sign=signer_fingerprint, passphrase=signer_passphrase) 
    

    diese zwei Dinge vermeiden würde

  1. eine externe Abhängigkeit zu dem gpg binary (macht Verteilung schwer)
  2. Umgang mit Befehlszeileneingänge und Ausgänge hat, die heikel ist