Frage:
Extrahieren der PGP-Schlüssel-ID aus der öffentlichen Schlüsseldatei
golja
2013-10-04 19:34:33 UTC
view on stackexchange narkive permalink

Gibt es eine Möglichkeit, über ein CLI-Tool oder eine API die PGP-Schlüssel-ID aus dem öffentlichen PGP-Schlüsselblock zu extrahieren?

Ich habe den Hexa-Wert des Schlüssels in der Binärdatei gefunden, aber Ich denke, die Position basiert auf der Art / Größe des Schlüssels.

Grundsätzlich habe ich den Base64-formatierten öffentlichen Schlüssel und möchte die Schlüssel-ID daraus abrufen, ohne sie mit GnuPG zu importieren. P. >

Sieben antworten:
Jens Erat
2013-10-04 20:13:09 UTC
view on stackexchange narkive permalink

Sie können gpg --dry-run verwenden, um Änderungen zu verhindern.

In der folgenden Zeile wird die Schlüssel-ID in der Ausgabe gedruckt (kann mit den üblichen Modifikatoren wie - mit Doppelpunkten zur weiteren Verarbeitung). A4FF2279 ist hier die Schlüssel-ID.

  $ gpg --dry-run --import pubkey.ascgpg: Schlüssel A4FF2279: öffentlicher Schlüssel "[Benutzer-ID nicht gefunden ] "importiertes gpg: Gesamtzahl der verarbeiteten: 1 gpg: importiertes: 1 (RSA: 1) gpg: Es wurden keine letztendlich vertrauenswürdigen Schlüssel gefunden.  

Ich habe es gerade versucht, der Schlüssel wurde nicht in meinem Schlüsselbund gespeichert. aber die Schlüssel-ID wurde gedruckt. Beachten Sie jedoch, dass mit --dry-run auf der Manpage eine Warnung angezeigt wird:

  --dry-run Nehmen Sie keine Änderungen vor (dies ist nicht vollständig implementiert).  

Eine ausführlichere Diskussion mehrerer Varianten für von Menschen lesbare, maschinenlesbare und sehr technische Ausgaben für verschiedene Versionen von GnuPG finden Sie in Die Frage Stapelüberlauf Wie werden GPG-Schlüsseldetails angezeigt, ohne sie zu importieren? . Alle zeigen auch die Schlüssel-ID an.

Wäre schön, wenn Sie Ihre Antwort unter Erwähnung des "--import --import-options show-only" aktualisieren könnten, was die sauberste Lösung darstellt (in Bezug auf das * nicht vollständig implementierte * Problem), wie Sie es bereits hier getan haben:[Wie werden GPG-Schlüsseldetails angezeigt, ohne sie zu importieren?] (Https://stackoverflow.com/a/22147722/1885518)
Anstatt die ganze Antwort zu duplizieren, habe ich mich für einen Hotlink entschieden.
Ich musste --verbose hinzufügen, damit die ID / E-Mail gedruckt wurde.(Zuerst musste ich auch das .gpg-Verzeichnis in $ HOME erstellen - nicht sicher, ob das eine WSL / Ubuntu-Eigenart ist oder was.)
@Murmel: `gpg --import --import-options show only` funktioniert nicht mit GPG 1.416.
Jor-el
2013-10-04 19:57:52 UTC
view on stackexchange narkive permalink

RFC 4880 im OpenPGP-Nachrichtenformat beschreibt, wie die Schlüssel-ID aus dem öffentlichen Schlüssel berechnet wird.

Auszüge aus Abschnitt 12.2:

Bei einem V3-Schlüssel besteht die 8-Oktett-Schlüssel-ID aus den niedrigen 64 Bit des öffentlichen Moduls des RSA-Schlüssels.

Und für V4-Schlüssel:

Ein V4-Fingerabdruck ist der 160-Bit-SHA-1-Hash des Oktetts 0x99, gefolgt von Die Paketlänge von zwei Oktetten, gefolgt vom gesamten Public-Key-Paket, beginnend mit dem Versionsfeld. Die Schlüssel-ID sind die niederwertigen 64 Bit des Fingerabdrucks.

Sie können die letzten 64 Bit einfach aus den Base64-codierten öffentlichen Schlüsseln analysieren. Dies ist die Schlüssel-ID für den entsprechenden öffentlichen Schlüssel .

Könnten Sie bitte näher auf "leicht die letzten 64 Bits analysieren ..." näher eingehen? Ich habe einen pgp-Schlüssel generiert (MPI im Base64-Format erhalten. Ist das mit öffentlichem Schlüssel gemeint?), Den ich beispielsweise in [hier] (https://conv.darkbyte.ru/) kopiert und eingefügt habe. und zählte die letzten 8 Bytes in hexadezimaler Darstellung. Ist das korrekt?
Traz
2018-12-17 14:33:32 UTC
view on stackexchange narkive permalink

Aus dem gpg-Handbuch (gpg (GnuPG) 2.2.11):

--show-keys

Dieser Befehl verwendet OpenPGP-Schlüssel als Eingabe und druckt Informationen über sie auf die gleiche Weise wie der Befehl --list-keys für lokal gespeicherte Schlüssel. Zusätzlich sind die Listenoptionen show-unbrauchbare-Uids, show-unbrauchbare-Unterschlüssel, Show-Notationen und Show-Richtlinien-URLs aktiviert. Wie bei der automatisierten Verarbeitung üblich, sollte dieser Befehl mit der Option --with-colons kombiniert werden.

Zum Beispiel:

$ gpg --show- Schlüssel docker-ce.gpgpub rsa4096 2017-02-22 [SCEA] 9DC858229FC7DD38854AE2D88D81803C0EBFCD88uid Docker Release (CE deb) <docker@docker.com>sub rsa4096 2017-02-22 die Schlüssel-ID.

Ich habe nicht abgelehnt, aber ich vermute, dass es sie bekommt, weil das sehr kurz ist.Können Sie erklären, was dieser Befehl tut?
Vielen Dank für den Rat @MikeOunsworth.Ich hoffe, meine neue Antwort ist angemessener.
Frühere Versionen von GPG, z.2.1.18 haben keine "--show-keys".
Georgios Doumas
2017-11-09 18:03:26 UTC
view on stackexchange narkive permalink

gpg --mit-Fingerabdruck GPG-KEY-Dateiname, den Sie aus dem Internet heruntergeladen haben

Zum Beispiel:

wget https://artifacts.elastic.co/GPG-KEY-elasticsearch

gpg - mit Fingerabdruck GPG-KEY-elasticsearch

Können Sie diese Antwort mit dem Befehlsargument und der Ausgabe dieses Schlüssels erweitern?
Befehl fehlt
Das heißt: Wenn Sie ein heruntergeladenes Oracle Java RPM-Paket validieren möchten, können Sie das Paket über `rpm -qip | überprüfengrep -i Signatur` und überprüfe den Schlüssel über `gpg --with-fingerprint RPM-GPG-KEY-ORACLE`.Sie finden als Ausgabe `Signatur: RSA / SHA256, Sa 06 Okt 2018 03:29:42 PM WEST, Schlüssel-ID 72f97b74ec551f03` und` Pub 2048R / EC551F03 2010-07-01 Oracle OSS-Gruppe (Open Source Software-Gruppe) Schlüsselfingerabdruck = 4214 4123 FECF C55B 9086 313D 72F9 7B74 EC55 1F03`.Wie Sie sehen können, passt die Schlüssel-ID `72f9 7b74 ec55 1f03` zum Fingerabdruck.
`gpg --with-fingerprint FILENAME` funktioniert mit GPG 1.4.16, aber nicht mit GPG 2.1.18.
gpg user
2014-11-20 03:39:29 UTC
view on stackexchange narkive permalink

Um das in Jens Erats Antwort erwähnte Problem "nicht vollständig implementiert" zu vermeiden, verwenden Sie gpg --homedir in einem temporären Verzeichnis. Möglicherweise müssen Sie den Befehl mktemp basierend auf Ihrer Plattform ändern:

  gpg --homedir $ (mktemp -d -t '') --import / tmp / somekey.asc  
Miha
2016-05-26 05:15:16 UTC
view on stackexchange narkive permalink

Nachdem der öffentliche Schlüssel importiert wurde

  pgp --import PublicKeyToImport.asc  

run

  pgp --list-userids  

, um den Schlüssel oder die Benutzer-ID zu bestimmen, die mit --encrypt verwendet werden sollen.

  Alg Type Größe / Typ Flags Schlüssel-ID Benutzer-ID ---- ---- --------- ------- ---------- -------  
In der Frage wird explizit nach einer Lösung gefragt, ohne den Schlüssel zu importieren.Diese Antwort beantwortet die Frage nicht.
pts
2020-04-30 16:09:21 UTC
view on stackexchange narkive permalink

Um die Schlüssel-IDs (8 Bytes, 16 hexadezimale Ziffern) abzurufen, hat dieser Befehl in GPG 1.4.16, 2.1.18 und 2.2.19 für mich funktioniert:

  gpg --list-packages <key.asc | awk '$ 1 == "keyid:" {print $ 2}'  

Weitere Informationen (zusätzlich zur Schlüssel-ID):

  gpg --list-packages <key.asc  

Um noch mehr Informationen zu erhalten:

  gpg --list-packages -vvv --debug 0x2 <key.asc  

Der Befehl

  gpg --dry-run --keyid-format long --import <key.asc  

funktioniert auch in allen 3 Versionen, aber in GPG 2.1.18 wird nur die Schlüssel-ID des Hauptschlüssels (und nicht der Unterschlüssel) und in 1.4.16 sowohl die Hauptschlüssel als auch die Unterschlüssel gedruckt.

Befehle in anderen Antworten (z. B. gpg --show-keys , gpg --with-fingerprint , gpg --import --import-options show-only ) funktioniert in einigen der oben genannten 3 GPG-Versionen nicht, daher sind sie nicht portierbar, wenn mehrere GPG-Versionen als Ziel ausgewählt werden.

gpg 1 _defaults_ to short keyid, aber Sie können `--keyid-format = long` angeben (oder in gpg.conf konfigurieren)
@dave_thompson_085: Vielen Dank, dass Sie "--keyid-format long" vorgeschlagen haben.Ich habe es meiner Antwort hinzugefügt.Jedoch.Ich empfehle die Verwendung von "gpg --dry-run --import" aufgrund von Inkonsistenzen bei der Berichterstattung über Unterschlüsselschlüssel-IDs zwischen GPG-Versionen.Ich habe dies auch zu meiner Antwort hinzugefügt.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...