GnuPG: как зашифровать/расшифровать файлы с помощью определенного ключа?

короче говоря, мой вопрос: как заставить GnuPG использовать закрытый / открытый ключ при шифровании / дешифровании файлов?


некоторые объяснения / длинная история

У меня есть приложение, которое должно шифровать файлы перед отправкой их в S3.

пользователи могут загружать свои файлы с помощью своих браузеров с моего сайта, и в этом случае я должен сначала расшифровать файлы перед их обслуживанием.

клиентской стороне (delphi 2010): Я, скорее всего, выберу OpenPGPBlackbox

серверная сторона (PHP 5), мне нужно выяснить, как шифровать/расшифровывать файлы с помощью неинтерактивных команд.

Я установил GnuPG на свой сервер, попробовал этот код:

clear_file='/full/path/my-file.zip'
encrypted_file='/full/path/my-file.zip.pgp'

# Encrypt file
/usr/bin/gpg2 --encrypt "$clear_file"

# Decrypt file
/usr/bin/gpg2 --decrypt "$encrypted_file"

но кажется, что я не могу указать в командной строке, какие ключи использовать.

каждый пользователь будет иметь свой собственный открытый / закрытый ключ, поэтому мне нужно указать, какой ключ использовать для зашифровать/расшифровать файл в вопрос.

мой вопрос: как заставить GnuPG использовать закрытый / открытый ключ при шифровании / дешифровании файлов?

1 ответов


параметры, которые вы ищете:

--default-key $name$
          Use $name$ as the default key to sign with. If this option is not used, the default key is
          the first key found in the secret keyring.  Note that -u or --local-user overrides  this
          option.
--local-user $name$
   -u     Use  $name$  as  the  key  to sign with. Note that this option overrides --default-key.

или, возможно:

--recipient $name$
   -r     Encrypt for user id $name$. If this option or --hidden-recipient is not specified, 
          GnuPG asks for the  user-id unless --default-recipient is given.
--default-recipient $name$
          Use  $name$  as default recipient if option --recipient is not used and don't ask if 
          this  is a  valid  one. $name$ must be non-empty.

они могут использоваться для указания того, кто является предполагаемым получателем, например, какой открытый ключ использовать для подписи / шифрования. При расшифровке файлов GnuPG автоматически выбирает правильный ключ, если он существует в текущем брелоке, который можно выбрать с помощью --keyring опция, если существует несколько. GnuPG также можно настроить для получения необходимых ключей с сервера ключей, если они доступны там.

вы также можете быть заинтересованы в опции --batch который убеждается что никакие взаимодействующие вопросы не спрошены во время excecution.

Я предлагаю вам прочитать справочную страницу GnuPG. Есть много вариантов, которые могут быть полезны сейчас и потом.