是否可以在不导入密钥的情况下使用 gpg 公钥加密消息?

Pat*_*ery 8 gpg pgp public-key

有时我可能想使用某人的 gpg 密钥来发送消息,但不需要再次使用该密钥。

在这种情况下导入密钥似乎没有必要。

我已经搜索过,但找不到任何表明这是可能的。每次都必须执行 --delete-keys 有点烦人。

Jen*_*rat 9

GnuPG 要求将您要使用的所有密钥导入到密钥环中。

如果您不想将其导入普通密钥环,请使用另一个(临时)密钥环,甚至是临时 GnuPG 主目录(这也将绕过任何配置)。

临时钥匙圈

设置--primary-keyring temporary.gpg为默认使用(并在必要时创建)临时密钥环。它将在您的 GnuPG 主目录中创建(~/.gnupg/temporary.gpg默认情况下)。您的普通钥匙圈仍然可用,但导入将转到临时钥匙圈。根据需要删除它。

例如:

gpg --primary-keyring temporary.gpg --import key.asc
gpg --primary-keyring temporary.gpg --recipient 0xDEADBEEF --encrypt
rm ~/.gnupg/temporary.gpg # can be omitted, not loaded by default
Run Code Online (Sandbox Code Playgroud)

临时 GnuPG 主目录

这也将重置所有配置,并且可能有助于测试一些东西。设置--homedir [folder]或环境变量$GNUPGHOME,导入密钥,执行任何操作,然后根据需要删除文件夹。

例如:

export GNUPGHOME=/tmp/gnupg # Or apply --homedir on each invocation
gpg --import key.asc
gpg --recipient 0xDEADBEEF --encrypt
rm -r $GNUPGHOME # Can be omitted
unset $GNUPGHOME
Run Code Online (Sandbox Code Playgroud)

GnuPG 对权限非常挑剔,您可能需要对$GNUPGHOME文件夹应用更严格的权限,然后才能执行所有操作。很可能是保留一些游乐场的选择$GNUPGHOME


Dan*_*ong 4

您可以制作一个小型 shell 脚本来复制 pubring.gpg 文件、导入密钥、加密您的文件,然后将原始 pubring.gpg 文件移回原位。这下次就会变成一句台词。

#!/bin/sh
cp -a ~/.gnupg/pubring.gpg ~/.gnupg/pubring.gpg-backup
gpg ... # Command to import 
gpg ... # Command to encrypt message/file
mv ~/.gnupg/pubring.gpg-backup ~/.gnupg/pubring.gpg
Run Code Online (Sandbox Code Playgroud)

注意:脚本的参数是变量“$1”,“$2”,...


编辑:我知道我很久以前就回答过这个问题。我想提到上面的一个陷阱:恢复备份之前的中断会导致密钥库被更改。我建议改为复制到临时目录中:

#!/bin/sh
gpgtemp="$(mktemp -d gpgtemp.XXXXXXXXXX)"
cp -a ~/.gnupg "$gpgtemp"
gpg --homedir "$gpgtemp/.gnupg" ... # Command to import 
gpg --homedir "$gpgtemp/.gnupg" ... # Command to encrypt message/file
rm "$gpgtemp" -rf
Run Code Online (Sandbox Code Playgroud)