Es gibt keine eingebaute Methode, aber es ist einfach genug, einen Test zu erstellen, der nichts ändert und es Ihnen ermöglicht, nur Ihre Passphrase zu überprüfen.
Sie haben nichts angegeben, daher gehe ich davon aus, dass Sie eine GnuPG-Version unter Version 2 verwenden und unter Linux mit Bash für Ihren Befehlszeileninterpreter arbeiten.
Ich werde den Befehl hier geben und unten werde ich erklären, was jeder Teil tut - (Hinweis: Das Folgende ist für GnuPG-Serie Version 1, siehe unten für GnuPG-Serie v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Dazu müssen Sie zunächst einen Text an GnuPG senden, mit echo "1234" |
dem Sie ihn signieren möchten. Da wir eigentlich nichts signieren möchten, ist dies nur ein Test. Wir werden also nutzlosen Text signieren.
Als nächstes weisen wir gpg an, den Schlüsselagenten nicht mit zu verwenden --no-use-agent
. Dies ist später wichtig, da abhängig von Ihrem Schlüsselagenten bei Erfolg möglicherweise nicht "0" zurückgegeben wird. Dies ist alles, was wir tun möchten - den Erfolg Ihrer Passphrase überprüfen.
Als Nächstes weisen wir gpg an, die signierten Daten direkt in die /dev/null
Datei einzufügen. Dies bedeutet, dass wir sie verwerfen und das Ergebnis nicht in das Terminal schreiben. HINWEIS: Wenn Sie keine Variante von Linux / Unix verwenden, ist diese Datei möglicherweise nicht vorhanden. Unter Windows müssen Sie möglicherweise nur zulassen, dass die signierten Daten auf den Bildschirm geschrieben werden, indem Sie das -o /dev/null
Teil einfach weglassen .
Als nächstes geben wir den Schlüssel an, mit dem wir unseren Test durchführen möchten --local-user 012345
. Sie können die KeyID für maximale Spezifität verwenden oder einen Benutzernamen verwenden, je nachdem, was Ihren Anforderungen am besten entspricht.
Als nächstes geben wir an -as
, wodurch der ASCII-Ausgabemodus aktiviert und der Kontextmodus für das Signieren festgelegt wird. Im -
Anschluss wird GnuPG lediglich angewiesen, die zu signierenden Daten vom Standard-In zu erhalten. Dies ist der allererste Teil des von uns erteilten Befehls echo "1234" |
.
Und zuletzt haben wir && echo "A message that indicates success"
- das "&&" bedeutet, wenn der vorherige Befehl erfolgreich war, drucken Sie diese Nachricht. Dies wird nur zur Verdeutlichung hinzugefügt, da der Erfolg des obigen Befehls ansonsten durch überhaupt keine Ausgabe angezeigt würde.
Ich hoffe, das ist klar genug, damit Sie verstehen, was los ist und wie Sie es verwenden können, um die Tests durchzuführen, die Sie durchführen möchten. Wenn ein Teil unklar ist oder Sie nicht verstehen, werde ich gerne klären. Viel Glück!
[BEARBEITEN] - Wenn Sie GnuPG v2 verwenden, muss der obige Befehl wie folgt geringfügig geändert werden:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Der Grund dafür ist, dass GnuPG v2 erwartet, dass die Passphrase über einen Agenten abgerufen wird. Daher können wir die Verwendung des Agenten mit nicht deaktivieren --no-use-agent
und haben den gewünschten Effekt. Stattdessen müssen wir GnuPG v2 mitteilen, dass wir einen "Batch" -Prozess ausführen und die Passphrase mithilfe der Option aus STDIN (Standard in) abrufen möchten --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Dadurch kann der Agent nur nach der Passphrase fragen und Ihnen mitteilen, ob diese korrekt war (dann wird nichts unternommen).