我可以做类似的事情:
gpg --public-key my.pub -e file.txt
如果可以,有什么理由不应该这样做?
P/s:我想我不需要知道收件人,因为我的机器一次只有一个公钥。
但是那个密钥很快就会改变(我可以删除所有旧的加密文件,所以不需要保留它们)。
我可以做类似的事情:
gpg --public-key my.pub -e file.txt
如果可以,有什么理由不应该这样做?
P/s:我想我不需要知道收件人,因为我的机器一次只有一个公钥。
但是那个密钥很快就会改变(我可以删除所有旧的加密文件,所以不需要保留它们)。
GnuPG 不支持加密到由密钥文件指定的收件人。必须提前导入密钥,并使用其邮件地址或密钥 ID 定义收件人。
我建议使用 GnuPG 所期望的更简洁的方法,并对密钥的指纹或该密钥提供的用户 ID 进行硬编码,然后照常导入。
如果您真的不想导入密钥,则可以执行以下解决方法(实际上是导入密钥,但导入到临时 GnuPG 主目录):
将密钥导入临时文件夹,例如使用
gpg --homedir /tmp/gnupg --import my.pub
确定文件中存储的密钥的密钥 ID:
KEYID=`gpg --list-public-keys --batch --with-colons --homedir /tmp/gnupg | head -n1 | cut -d: -f5`
加密发给收件人的消息
gpg --homedir /tmp/gnupg --recipient ${KEYID} --encrypt
清理临时 GnuPG 主目录
rm -f /tmp/gnupg
您当然可以将其保存为脚本,以便更方便地使用。
从查看您的问题看来,您有兴趣使用您已经拥有的自己的公钥(示例中的my.pub)进行加密。
事实上,这不仅是可能的,而且是可取的,因为它用于提供加密的非交互式自动化。如果它是您的公钥,那么您隐含地信任它,并且可以放心地执行以下操作:
gpg --batch --yes --trust-model always -r $GPGPUBKEYRECIPIENTEMAIL -e ./file.txt
没有需要答案的交互式提示,因此可以编写加密脚本。注意:我将我的PUBLIC密钥上传到我想要保护数据的公共服务器,将PRIVATE密钥与它分开。
但是,如果您不使用自己的密钥进行加密,则该--trust-model always
开关可能是狡猾的。另请注意,在解密时,系统会提示您输入密码,除非您自动执行此操作。HTH bud- Terrence Houlahan
据我所知,收件人的公钥 ID、密钥有效期、姓名和电子邮件地址都嵌入在 GPG ASCII Armor 文件中(GnuPG 手册 )
pub 1024D/BB7576AC 1999-06-04 Alice (Judge) <alice@cyb.org>
所以使用 pub key file/Key ID/Name/Email 来识别使用哪个公钥应该都是等价的。
但是我现在无法访问 linux 机器,所以无法检查。