在 Linux 中使用 GnuPG 加密和解密文件
使用 GnuPG gpg 命令,您可以生成公钥和私钥。在本文中,我们将使用 gpg 命令生成的密钥来发送和接收加密文件,并对文件进行数字签名。
加密文件并将其发送给您的朋友
1. 导入你朋友的公钥
当您想向您的朋友发送秘密文件时,首先要做的是导入您朋友的公钥。如果他/她已将他们的公钥导出到密钥服务器,您可以从“密钥服务器”导入您的朋友的公钥。
要从密钥服务器导入公钥,请执行以下操作。您可以使用上述任何一种方法导入。提供您朋友的 Key-ID 或 E-Mail ID 或真实姓名以正确导入密钥。
$ gpg --search-keys --keyserver keyserver.ubuntu.com 'KEY-ID'
or
$ gpg --search-keys --keyserver keyserver.ubuntu.com 'E-Mail ID'
or
$ gpg --search-keys --keyserver keyserver.ubuntu.com 'Real Name'
要从文件中导入公钥,请执行以下操作。如果您的朋友已将他/她的公钥通过电子邮件发送给您,那么您可以使用以下命令导入这些密钥
$ gpg --import myfriends_pub_key.gpg
2.验证导入的密钥服务器
您可以使用 –list-keys 选项验证您是否已成功导入朋友的公钥
$ gpg --list-keys
/home/lakshmanan/.gnupg/pubring.gpg
-----------------------------------
pub 2048R/A7344E7D 2012-10-12
uid lakshmanan (My test GPG keys)
sub 2048R/96F8EF9B 2012-10-12
pub 2048R/FB2744A8 2012-12-03
uid raman (Ram's test ID)
sub 2048R/88EF55EE 2012-12-03
现在我已经导入了我朋友拉曼的公钥。
3. 使用你朋友的公钥加密一个秘密文件
现在您有了朋友的公钥,您可以向他发送一个文件,该文件使用“您朋友的公钥”加密,因此只有您的朋友(拥有私钥的人)才能解密它。
$ gpg --encrypt --recipient raman a.txt
gpg: 88EF55EE: There is no assurance this key belongs to the named user
pub 2048R/88EF55EE 2012-12-03 raman (Ram's test ID)
Primary key fingerprint: FF32 7764 A0AE 1E85 AC4B CF17 8AED B292 FB27 44A8
Subkey fingerprint: D6A5 7107 77C8 6845 2F86 765C EEED DD85 88EF 55EE
It is NOT certain that the key belongs to the person named
in the user ID. If you *really* know what you are doing,
you may answer the next question with yes.
Use this key anyway? (y/N) y
请注意,有一条警告说,不能保证“公钥”属于您的朋友。我们将在时间允许的情况下回顾这一点。到目前为止,因为我相信我的油炸,我已经给出了“是”来使用密钥。
它将创建一个名为“a.txt.pgp”的文件,当使用编辑器打开时,它会包含一些二进制数据。以任何方式将此文件发送给您的朋友。
如果您不想发送二进制内容,或者在发送二进制时存在问题,您可以使用 –armor 选项创建一个 ASCII 文件,如下所示。
$ gpg --encrypt --armor --recipient raman a.txt
解密文件
现在您的朋友会收到您的加密文件。为了查看文件的内容,他需要解密文件。由于解密操作将使用您朋友的私钥执行,因此在创建密钥时会询问您朋友提供的密码。
$ gpg --decrypt a.txt.gpg > secret.txt
现在文件 secret.txt 将包含实际写入的文本。
将加密文件发送给多个收件人
您还可以使用 –recipient 或 -r 将文件发送给多个收件人
$ gpg -r raman -r steve -r gopi --encrypt a.txt
一旦给出上述命令,gpg 将使用所有接收者的公钥来加密数据,这样他们的任何一个私钥都可以解密数据。
在本系列的下一篇文章中,我们将解释如何使用数据和时间戳对消息进行签名。
- 点赞
- 收藏
- 关注作者
评论(0)