Для этого нет встроенного метода, но достаточно просто создать тест, который ничего не изменяет и позволяет вам просто проверить вашу парольную фразу.
Вы не указали, поэтому я предполагаю, что вы используете версию GnuPG ниже v2 и используете Linux с Bash в качестве интерпретатора командной строки.
Я дам команду здесь, а ниже я объясню, что делает каждая часть - (примечание: следующее относится к серии GnuPG версии 1, см. Ниже для серии GnuPG v2)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Что для этого нужно, так это сначала передать какой-то текст для подписи в GnuPG echo "1234" |
- потому что мы действительно не хотим ничего подписывать, это всего лишь тест, поэтому мы подпишем какой-то бесполезный текст.
Затем мы говорим gpg не использовать ключевой агент с --no-use-agent
; это важно позже, потому что, в зависимости от вашего ключевого агента, он может не вернуть «0» в случае успеха, и это все, что мы хотим сделать - проверить успешность вашей парольной фразы.
Затем мы говорим gpg поместить подписанные данные непосредственно в /dev/null
файл, то есть мы отбрасываем их и не записываем результат в терминал - ПРИМЕЧАНИЕ: если вы не используете какой-либо вариант Linux / Unix, этот файл может не существовать. В Windows вам может потребоваться просто разрешить ему записывать подписанные данные на экран, просто опуская-o /dev/null
часть.
Затем мы указываем ключ, с которым хотим провести тест, используя --local-user 012345
. Вы можете использовать KeyID для максимальной конкретности или использовать имя пользователя, в зависимости от того, что лучше всего соответствует вашим потребностям.
Затем мы указываем -as
, что включает режим вывода ascii и устанавливает контекстный режим для подписи. -
Потом просто говорит GnuPG , чтобы получить данные , которые должны быть подписаны от стандартного в, который является первой частью команды мы дали echo "1234" |
.
И наконец, у нас есть && echo "A message that indicates success"
- «&&» означает, что если предыдущая команда была успешной, распечатать это сообщение. Это просто добавлено для ясности, потому что в противном случае успешное выполнение приведенной выше команды означало бы полное отсутствие вывода.
Я надеюсь, что это достаточно ясно, чтобы вы поняли, что происходит, и как вы можете использовать это для тестирования, которое хотите провести. Если какая-то часть непонятна или вы не поняли, буду рад уточнить. Удачи!
[РЕДАКТИРОВАТЬ] - Если вы используете GnuPG v2, приведенную выше команду нужно будет немного изменить, например:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Причина в том, что GnuPG v2 ожидает, что кодовая фраза будет получена через агент, поэтому мы не можем отключить использование агента --no-use-agent
и получить желаемый эффект; вместо этого нам нужно сообщить GnuPG v2, что мы хотим запустить «пакетный» процесс, и получить кодовую фразу из STDIN (стандартно в) с помощью этой опции --passphrase-fd 1
.
gpg --local-user <KEYID> -as
. Это просто позволяет агенту запрашивать кодовую фразу и сообщать вам, правильна ли она (затем ничего не делает).