在 Linux 中使用 GnuPG 加密和解密文件

举报
Tiamo_T 发表于 2022/07/20 17:22:35 2022/07/20
【摘要】 在本文中,我们将使用 gpg 命令生成的密钥来发送和接收加密文件,并对文件进行数字签名。

使用 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 将使用所有接收者的公钥来加密数据,这样他们的任何一个私钥都可以解密数据。

在本系列的下一篇文章中,我们将解释如何使用数据和时间戳对消息进行签名。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。