python-gnupg.verschlüsseln : kein Fehler, aber nicht die Verschlüsselung von Daten oder Dateien
mithilfe von python-gnupg-v0.3.5 auf windows 7 w/Python 2.7 und GPG4Win v2.2.0
test_gnupg.py Ergebnisse in 2 Ausfälle:
Test, der auf der Suche nach Schlüsseln funktioniert ... FAIL
Doctest: gnupg.GPG.recv_keys ... FAIL
2 Schlüsselringe bestehen, in jeder dieser Standorte(secring & pubring in jedem):
unter der GPGHome Verzeichnis (C:\Program Files (x86)\GNU\GnuPG)
unter dem Profil des Nutzers(C:\Users\\AppData\Roaming\gnupg)
Ist, wenn ich die GPG-Instanz und legen Sie die Schlüsselbund-Datei Pfad zum user-Profil pubring.pgp bekomme ich ein Ergebnis von GPG.list_keys(). Wenn ich lassen Sie es, verwenden Sie die gpghome Verzeichnis pubring.pgp bekomme ich keine Ergebnisse aus list_keys (), denn das Schlüsselbund ist leer.
So gegeben, ich geben Sie die Benutzer-Profil-Schlüsselring und ich habe einen Schlüssel zu verwenden, dies ist, was passiert:
>>>data = '1234 abcd 56678'
>>>fingerprint = u'<fingerprint>'
>>>enc = gpg.encrypt(data,fingerprint)
>>>enc.data
''
encrypt_file() liefert die gleichen Ergebnisse, es passiert nichts, keine Fehler. Ich bin nicht besonders versiert in irgendwelche von diesem, aber es scheint, wie wenn ich die Daten und den öffentlichen Schlüssel dieser tot sein sollte einfach. Ich habe eine schreckliche Zeit, die versucht zu bestimmen, was falsch ist gegeben, sehe ich keine log-Dateien überall und ich habe keine Fehler, wenn Sie versuchen diese.
Wie kann ich bestimmen, was läuft hier falsch?
Gelesen habe ich so ziemlich alles, was ich finden kann hier auf StackOverflow, http://pythonhosted.org/python-gnupg/#getting-started und die google-Gruppe für python-gnupg.
Auch, warum muss ich 2 separate Sätze der Schlüsselanhänger in den ersten Platz?
Bearbeiten:
geklärt, es gibt 2 separate Gruppen von pubring und secring
edit 2:
Antwort unten war instrumental in führenden dem eigentlichen problem.
der gnupg.GPG () - Konstruktor setzt gpg-Kommandozeilen-Optionen, über die "no-tty", ruft gnupg.GPG(options=") behebt das Problem und erfolgreich verschlüsselt Daten und Dateien.
- Standardmäßig haben Sie eine pubring.gpg und secring.gpg-Datei im home-Verzeichnis. Der ehemalige speichert die öffentlichen Schlüssel und die letztere speichert die privaten Schlüssel. Wie für den rest von deiner Frage ... ich in der Regel nur rufen Sie GPG auf der Kommandozeile, so werde ich Graben müssen, um in dieses Modul später und kommen zurück, um es (es sei denn, jemand schlägt mich). Auch gibt es bereits Wein gegossen auf dieser Seite des Planeten, so könnte es eine Weile dauern.
- In der Tat, ich bin vertraut mit pubring und secring, aber ich habe 2 von jeder, den man unter dem user-Profil und einem in der GPG-home. Zur änderung der Frage zu geben, die info.
- Einen Satz wird der Schlüsselanhänger für Ihren Benutzer-account auf dem system und der andere Satz werden die globalen Standardeinstellungen für das system. Wahrscheinlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, ich habe endlich um zu betrachten, und bekam einfache Verschlüsselung arbeiten von der Befehl Linie. Hier ist ein Beispiel, dass es funktionieren wird, um Daten zu verschlüsseln eingegeben von der Befehlszeile aus:
Ändern Sie die gpg_home nachdem, welcher dieser beiden GnuPG Pfade, die Sie verwenden möchten. Das erste man sieht aus wie der Standard-Speicherort für die installation und die zweite zu sein scheint spezifisch für Ihr Benutzerkonto. Das Skript wird eine Eingabeaufforderung für den text zu verschlüsseln und ein Schlüssel-ID zu verschlüsseln und drucken Sie dann die ASCII-Gepanzerte verschlüsselte Daten nach stdout.
EDIT: ich bin mir nicht sicher, aber ich vermute, der Grund, warum Ihr code konnte wurde entweder durch die Verwendung des gesamten Fingerabdruck für den Empfänger-Schlüssel-ID, die unnötig ist (ich habe die 0xLONG-format, ein Beispiel ist auf meinem Profil), oder Sie nennt den falschen GPG-home Verzeichnis.
EDIT 2: Das funktioniert zum verschlüsseln von Dateien und schreibt die Ausgabe in eine Datei im selben Verzeichnis ist, wird es funktionieren, wie auf *nix-Systemen. Sie müssen die gpg_home wie im obigen Beispiel:
Meine Arbeit hier ist getan! 🙂
BTW, diese beiden Beispiele für die Verwendung von Python 2.7, Python 3 müssen Sie ändern Sie die raw_input () - Linien zu verwenden, input() statt.