是否可以使用 gpg 公钥加密消息而不导入密钥?

是否可以使用 gpg 公钥加密消息而不导入密钥?

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

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

我搜索过,但找不到任何可以实现这一点的线索。每次都要执行 --delete-keys 有点烦人。

答案1

您可以编写一个小的 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

注意:脚本的参数是变量“$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

答案2

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

临时 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

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

相关内容