Linux中通过 GPG 加解密文件

GPG 是一个用于加解密的命令行工具,其中包含了对一些常用的加解密场景的支持命令。

GPG 是 GnuPG (GnuPrivacyGuard) 的缩写。其中的 PG 是指 PGP (Pretty Good Privacy):https://en.wikipedia.org/wiki/Pretty_Good_Privacy

PGP 是商业用的加密软件,GPG 是自由软件基金开发的开源替代版本。

GPG 是如何进行加密的?

GPG 加密

要使用 GPG,你首先需要有一个 GPG 密钥。

GPG 密钥是你在后面的教程中用来加密(或解密)文件的东西。它也是用来识别你的身份的,你的名字和电子邮件也会与密钥绑定。

GPG 密钥的工作原理是使用两个文件,一个私钥和一个公钥。这两个密钥是相互联系的,并且 GPG 的所有功能都需要使用它们,特别是对文件加密和解密。

当你用 GPG 加密一个文件时,它使用的是私钥。然后,这个新的加密文件只能用配对的公钥进行解密。

私钥,顾名思义,是以私下的、不给任何人看的方式来存储的密钥。

另一方面,公钥是用来给其他人的,或者你希望能够解密你的文件的任何人。

这就是 GPG 的加密方法的主要作用。它允许你对文件进行本地加密,然后允许其他人确保他们收到的文件实际上是由你发送的。因为他们能够解密文件的唯一方法是使用你的公钥,而这只有在文件首先使用你的私钥加密的情况下才有效。

反之,其他人可以用你的公钥对文件进行加密,而唯一能够解密的方法是用你的私钥。因此,允许其他人公开发布文件,而不用担心除了你以外的人能够阅读它们。(LCTT 译注:另外一个常见的用例是你用你的私钥对公开发布的文件进行签名,别人使用你的公钥通过验证你的签名而确信文件是你发布的、并没有被篡改。但本文没有涉及这个用例。)

换句话说,如果一个文件是用私钥加密的,它只能用相应的公钥解密。而如果一个文件是用公钥加密的,它只能用相应的私钥解密。

你已经在使用 GPG 而没有意识到

一个最常见的使用 GPG 的例子是在 Linux 软件包管理器中,特别是 外部仓库。你把开发者的公钥添加到你系统的可信密钥中。开发者用他/她的私钥签署软件包(生成签名)。由于你的 Linux 系统拥有该公钥文件,它就能理解该软件包实际上是来自受信任的开发者。

许多加密服务在你没有意识到的情况下使用了某种 GPG 的实现。但现在最好不要去研究这些细节。

现在你对这个概念有点熟悉了,让我们看看如何使用 GPG 来加密一个文件,然后用它来解密。

用 GPG 对文件进行加密和解密

这是一个非常简单的场景。我假定你只有一个系统,你想看看 GPG 是如何工作的。你并没有把文件发送到其他系统。你对文件进行加密,然后在同一个系统上解密。

当然,这不是一个实际的用例,但这也不是本教程的目的。我的目的是让你熟悉 GPG 命令和功能。之后,你可以在现实世界中使用这些知识(如果需要的话)。为此,我将告诉你如何与他人分享你的公钥。

第一步:安装 GPG

GPG 可以在大多数发行版的软件库中找到,开箱即用。

在基于 Debian 和 Ubuntu 的系统中,安装 gpg 包:

sudo apt install gpg1.

如果你使用 基于 Arch 的发行版,用 pacman 命令 安装 gnupg 软件包:

sudo pacman -S gnupg1.

第二步:生成一个 GPG 密钥

在你的系统上生成一个 GPG 密钥只需要一条简单的命令。

只要运行下面的命令,就会生成你的密钥(你可以对大多数问题使用默认值,如下面的下划线部分所示)。

gpg --full-generate-key 1.

生成 GPG 密钥

检查 GPG 密钥

然后你可以通过使用 --list-secret-keys--list-public-keys 参数,分别看到私钥和公钥都是通过 pub 下显示的那个 ID 相互绑定的。

列出 GPG 密钥

第三步:用 GPG 加密一个文件

现在你已经设置了 GPG 密钥,你可以开始对我们的文件进行加密了。

使用下面的命令来加密文件:

gpg --encrypt --output file.gpg --recipient [email protected] file1.

让我们快速浏览一下该命令的内容:

首先,你指定了 —encrypt 选项。这告诉 GPG,我们将对一个文件进行加密。

接下来,你指定了 --output file.gpg。这可以是任何名字,不过惯例是给你要加密的文件的名称加上 .gpg 扩展名(所以 message.txt 会变成 message.txt.gpg)。

接下来,你输入 —recipient [email protected]。这指定了一个相应的 GPG 密钥的电子邮件,这个密钥实际上在这个系统上还不存在。

有点迷惑?

工作原理是,你在这里指定的电子邮件必须与你本地系统中的公钥相联系。

通常情况下,这将是来自另外一个人的 GPG 公钥,你要用它来加密你的文件。之后,该文件将只能用该用户的私钥进行解密。

在这个例子中,我将使用我以前的与 [email protected] 关联的 GPG 密钥。因此,其逻辑是,我用 [email protected]公钥 对文件进行加密,然后只能用 [email protected]私钥 进行解密。

如果你是为别人加密文件,你只有该公钥,但由于你是为自己加密文件,你的系统上有这两个密钥。

最后,你只需指定你要加密的文件。在这个例子中,让我们使用一个名为 message.txt 的文件,内容如下:

We're encrypting with GPG! 1. 

文本文件样本

同样地,如果电子邮件是 [email protected],新的 GPG 命令将如下所示:

gpg --encrypt --output message.txt.gpg --recipient [email protected] message.txt 1.

用 GPG 加密文件

如果你尝试阅读该文件,你会看到它看起来像乱码。这是预料之中的,因为该文件现在已经被加密了。

读取加密文件会产生乱码

现在让我们删除未加密的 message.txt 文件,这样你就可以看到 message.txt.gpg 文件实际上在没有原始文件的情况下也能正常解密。

第四步:用 GPG 解密加密的文件

最后,让我们来实际解密加密的信息。你可以用下面的命令来做。

gpg --decrypt --output file file.gpg1.

通过这里的参数,我们首先指定 —decrypt,它告诉 GPG 你将会解密一个文件。

接下来,你输入 —output 文件,这只是告诉 GPG,在你解密后,你将把我们文件的解密形式保存到哪个文件。

最后,你输入 file.gpg,这是你的加密文件的路径。

按照这个例子,我使用的命令是这样的。

gpg --decrypt --output message.txt message.txt.gpg 1.

用GPG解密文件

然后就完成了!当你想用 GPG 加密和解密文件时,这就是全部内容了。

剩下你可能想知道的是如何与他人分享你的公钥,以便他们在将文件发送给你之前对其进行加密。

发送和接收 GPG 密钥

要给别人发送一个 GPG 密钥,你首先需要从你的钥匙链中导出它,它包含了你所有的公钥和私钥。

要导出一个密钥,只需在你的钥匙链中找到密钥的 ID,然后运行以下命令,用密钥的 ID 替换 id,用你想保存的文件名替换 key.gpg

gpg --output key.gpg --export id 1.

导出 GPG 公钥

要导入一个密钥,只需把输出文件(来自前面的命令)给其他用户,然后让他们运行下面的命令。

gpg --import key.gpg 1.

但要正常使用该密钥,你需要验证该密钥,以便 GPG 正确地信任它。

这可以通过在其他用户的系统上使用 --edit-key 参数来完成,然后对密钥进行签名。

首先运行 gpg --edit-key id

GPG 编辑密钥

接下来,使用 —fpr 参数,它将显示密钥的指纹。这个命令的输出应该与你自己机器上的输出进行验证,这可以通过在你的系统上运行同样的 --edit-key 参数来找到。

GPG 密钥的指纹

如果一切吻合,只需使用 —sign 参数,一切就可以开始了。

签署 GPG 密钥

就是这样!其他用户现在可以开始用你的公钥加密文件了,就像你之前做的那样,这可以确保它们只有在你用你的私钥解密时才能被你读取。

这就是使用 GPG 的所有基础知识!

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/222066.html<

(0)
运维的头像运维
上一篇2025-04-15 08:00
下一篇 2025-04-15 08:02

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注