Linux gpg命令(gpg指令、gpg加密工具)(GNU Privacy Guard、GnuPG)文件压缩加密、文件加密、文件解密、文件压缩密码、解压密码、GPG密钥、数字签名、非对称加密

这篇具有很好参考价值的文章主要介绍了Linux gpg命令(gpg指令、gpg加密工具)(GNU Privacy Guard、GnuPG)文件压缩加密、文件加密、文件解密、文件压缩密码、解压密码、GPG密钥、数字签名、非对称加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux GPG加密工具

GNU Privacy Guard (GnuPG或GPG) 是一个完全免费的开源实现,用于OpenPGP标准的数据加密和解密。这种加密方式可以用于保护敏感数据,确保其在传输过程中不被截获或篡改。本文将介绍在Linux环境中如何使用GPG加密工具。

1. 安装和设置GPG

安装gpg

在大多数Linux发行版中,GPG已经预先安装了。

如果未安装,则可以使用相应的包管理器进行安装。例如,在基于Debian的系统上,可以使用以下命令:

sudo apt-get install gnupg

创建gpg密钥

首次使用GPG时,需要生成一对密钥,包括公钥和私钥。这可以通过以下命令完成:

gpg --gen-key

我给我的Arnold用户/sxana@qq.com邮箱创建了密钥:

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器
linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

root@sx-virtual-machine:/userdata/testOtherPrj/20231108_testKeys# gpg --gen-key
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: Arnold
Email address: sxana@qq.com
You selected this USER-ID:
    "Arnold <sxana@qq.com>"

Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key C0304E2CCF82E773 marked as ultimately trusted
gpg: directory '/root/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/739D66D45E6FEF19870D1188C0304E2CCF82E773.rev'
public and secret key created and signed.

pub   rsa3072 2023-11-08 [SC] [expires: 2025-11-07]
      739D66D45E6FEF19870D1188C0304E2CCF82E773
uid                      Arnold <sxana@qq.com>
sub   rsa3072 2023-11-08 [E] [expires: 2025-11-07]

关于公钥私钥原理,可以参考文章:SSH公钥原理(密钥,秘钥,私钥)

2. GPG密钥管理

2.1 查看密钥列表、导出和导入GPG密钥、删除密钥

查看密钥列表
gpg --list-keys

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

关于密钥信任级别(ultimate、unknown、none、marginal、full)

在GPG中,ultimateunknown是表示密钥信任级别的术语。

  • ultimate:表示你对这个密钥有最高程度的信任。通常,你自己生成的密钥的信任级别会被设置为ultimate,因为你可以确定这个密钥确实属于你,而且你完全控制这个密钥。

  • unknown:表示你对这个密钥的信任程度未知。这可能是因为这个密钥是新导入到你的密钥环的,你还没有设定对它的信任级别。

GPG的信任模型允许你设定对每个公钥的信任级别,以帮助确定其他公钥的有效性。除了ultimateunknown外,还有以下几种信任级别:

  • none:表示你对这个密钥没有信任。
  • marginal:表示你相当确定这个密钥的所有者就是它声称的那个人。
  • full:表示你非常确定这个密钥的所有者就是它声称的那个人。

在大多数情况下,你不需要手动设定密钥的信任级别,除非你在使用GPG的Web of Trust特性。

导出公钥

共享公钥使其他人能够发送加密消息。下面的命令将公钥导出到文件:

gpg --output public.key --armor --export [Your-Email]

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

注意:如果同一个邮箱下有多个密钥,统统导出到一个文件。

导入公钥

当接收别人的公钥时,需要将其导入密钥环。可以使用以下命令:

gpg --import public.key

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

注意:如果密钥文件中有多个公钥(应该是同一个邮箱),都会统统导入。

删除密钥(公钥和私钥)

要删除GPG密钥对(包括公钥和私钥),需要先知道密钥的ID。可以通过以下命令列出所有的公钥,并找到要删除的公钥的ID:

gpg --list-keys

该命令将列出密钥环中的所有公钥,每个公钥都有一个唯一的ID。找到要删除的公钥的ID后,可以使用以下命令来删除它:

gpg --delete-key YOUR_KEY_ID

这里,YOUR_KEY_ID应替换为你想要删除的公钥的ID。

注意:如果还存在与公钥相关联的私钥,那么在尝试删除公钥时,GPG会提示你首先需要删除私钥。可以使用以下命令来删除私钥:

gpg --delete-secret-key YOUR_KEY_ID

在删除私钥之后,就可以按照上面的步骤来删除公钥了。

请谨慎处理这些操作,因为一旦删除了密钥,就无法恢复。除非你有备份,否则所有用该密钥加密的信息都将无法解密。

示例

删除公钥,提示这个公钥包含私钥,要先删除私钥:

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

删除私钥后,我们再删除公钥:

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

2.2 备份和恢复GPG密钥

备份私钥

私钥是非常重要的,因此应该定期备份。下面的命令可以将私钥导出到文件:

gpg --output private.key --armor --export-secret-keys [Your-Email]

注意:如果邮箱下只有公钥没有私钥,是没法备份的。会输出像以下结果:

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

正常备份私钥,是像下面结果:

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

恢复私钥

如果需要从备份中恢复私钥,可以使用以下命令:

gpg --import private.key

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

3. 加密和解密数据

GPG支持多种数据类型的加密和解密,包括文本、二进制文件等。

加密数据

下面的命令将对doc.txt进行加密:

gpg --output doc.gpg --encrypt --recipient [Recipient-Email] doc.txt

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

解密数据

接收者可以使用自己的私钥来解密数据:

gpg --output doc.txt --decrypt doc.gpg

4. 使用GPG进行数字签名

数字签名提供了一种方法来验证消息的完整性和来源。

创建数字签名

gpg --output doc.sig --detach-sig doc.txt

验证数字签名

gpg --verify doc.sig doc.txt

5. GPG技术点解析

5.1 GPG加密原理

GPG使用公钥加密算法,这意味着每个用户都有一对密钥。公钥用于加密数据,私钥用于解密数据。由于私钥需要保密,所以通常存储在用户的本地系统上,并通过密码保护。

5.2 GPG与对称加密

虽然GPG主要使用公钥加密,但实际上它使用了一种混合的方法。对于大型数据,GPG会生成一个一次性的会话密钥,并使用此密钥进行对称加密。然后,再用接收者的公钥加密会话密钥。

5.3 GPG数字签名原理

GPG的另一个重要功能是数字签名。这是通过将数据的哈希值和私钥一起加密来实现的。结果就是一个数字签名,可以附加到数据上。验证签名时,将使用发送者的公钥进行解密,然后比较解密后的哈希值和数据的当前哈希值。如果两个哈希值匹配,那么数据就是完整的,没有被篡改。

6. GPG简单文件非对称加密解密示例(脚本自动无阻塞输入)

使用gpg命令时直接指定密码(例如,通过脚本进行加密),可以使用--passphrase参数。但是我测试发现,即使使用了--passphrase,也会弹出消息提示输入passphrase,然后有两种解决办法,一种是把密码写在文件里,执行命令时去读,另一种是使用管道,用echo命令将密码传给gpg命令,我们使用第二种方法。

下面是如何做到这一点的示例:

1. 加密

echo 'YourPassPhrase' | gpg --batch --yes --passphrase-fd 0 --symmetric --cipher-algo AES256 -o outputfile.gpg inputfile.tar.gz

这个命令是用来执行对称加密的,具体来说就是使用GPG将一个名为inputfile.tar.gz的tar压缩包加密为outputfile.gpg。下面是对每个部分的解释:

  • echo 'YourPassPhrase':这个命令输出你的密码字符串YourPassPhrase(请替换为你自己的密码)。由于后面有管道操作符|,所以这个输出将会作为下一个命令的输入。

  • |:管道操作符。它会将前一个命令的标准输出作为后一个命令的标准输入。

  • gpg:这是GNU Privacy Guard工具的命令行接口,它提供加密和签名功能。

  • --batch:告诉GPG在批处理模式下运行,即不要求用户交互输入。

  • --yes:对所有提示自动回答“yes”,例如覆盖文件等操作。

  • --passphrase-fd 0:指示GPG从文件描述符0读取密码,也就是从标准输入中获取密码。在这里,标准输入已经被前面的echo命令通过管道重定向了。

  • --symmetric:指示GPG使用对称加密,意味着加密和解密使用相同的密码。

  • --cipher-algo AES256:选择AES256作为对称加密算法。AES256是一种广泛使用的高强度加密算法。

  • -o outputfile.gpg:指定输出文件的名称。在这个例子中,加密后的文件将保存为outputfile.gpg

  • inputfile.tar.gz:指定要加密的输入文件,这里是名为inputfile.tar.gz的tar压缩包。

综合来看,这个命令的执行流程是:首先输出密码,然后通过管道将该密码作为GPG命令的输入,GPG命令根据提供的参数进行对称加密,最终生成加密后的文件outputfile.gpg

示例

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器

2. 解密

echo 'YourPassPhrase' | gpg --batch --yes --passphrase-fd 0 -o outputfile.tar.gz -d inputfile.gpg

在这个命令中,

  • echo 'YourPassPhrase':这个命令会输出你的密码。
  • |:这个符号是管道操作,它将前一个命令的输出作为下一个命令的输入。
  • gpg --batch --yes --passphrase-fd 0 -o outputfile.tar.gz -d inputfile.gpg:这个命令会从标准输入(由--passphrase-fd 0指定)读取密码,并用该密码来解密inputfile.gpg

同样的,虽然这种方法可以实现在命令行中直接输入密码,但请注意这并不安全,特别是在多用户的环境中,因为其他用户可能可以查看到正在运行的进程和它们的命令行参数。

示例

linux跳过gpg,linux,网络安全,网络编程,linux,运维,服务器文章来源地址https://www.toymoban.com/news/detail-771671.html

注意事项

  1. 上述加密解密命令不能将输入文件和输出文件写成相同,否则报错。

到了这里,关于Linux gpg命令(gpg指令、gpg加密工具)(GNU Privacy Guard、GnuPG)文件压缩加密、文件加密、文件解密、文件压缩密码、解压密码、GPG密钥、数字签名、非对称加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 加密与安全_PGP、OpenPGP和GPG加密通信协议

    PGP (Pretty Good Privacy) 是一种加密通信协议,用于保护电子邮件和文件的安全性和隐私。它通过使用加密、数字签名和压缩技术来确保数据的保密性、完整性和可验证性。 GP最初由麻省理工学院的Nick embrace和Eric Hughes开发,后来由Phil Zimmermann进一步发展。它使用公钥加密和私钥解

    2024年04月13日
    浏览(39)
  • Linux系统下的程序调试工具——GDB(GNU Debugger)

    GCC(GNU Compiler Collection)是GNU开发的编程语言编译器,它支持多种编程语言,如C、C++、Objective-C、Fortran、Ada和Go等。 以下是一些常用的操作: 启动GDB并加载程序 设置断点 在代码中的某一行设置断点,当程序运行到这一行时,GDB会暂停执行。 例如,如果你在 main.c 文件的第

    2024年04月13日
    浏览(49)
  • 交叉编译工具 aarch64-linux-gnu-gcc 的介绍与安装

    AArch64 是随 ARMv8 ISA 一起引入的 64 位架构,用于执行 A64 指令的计算机。而且在 AArch64 状态下执行的代码只能使用 A64 指令集。,而不能执行 A32 或 T32 指令。但是,与 AArch32 中不同,在64位状态下,指令可以访问 64 位和 32 位寄存器。 aarch64-linux-gnu-gcc 是一个交叉编译工具链,可

    2024年04月14日
    浏览(48)
  • 安装交叉编译工具链aarch64-linux-gnu-g++ 以及cmake测试

       测试文件结构    CMakeLists.txt  参考文章: linux 交叉编译 C和C++_aarch64-linux-gnu-gcc查看版本_weixin_45302027的博客-CSDN博客 ubuntu16.04 安装交叉编译工具aarch64-linux-gnu-gccg++_ubuntu 安装aarch64-linux-gnu-gcc_普通网友的博客-CSDN博客

    2024年02月12日
    浏览(50)
  • IP-GUARD加密模式详细解析

      1.文档透明加密(自动加解密):能够查看和编辑加密文档,授权进程新建的文件编辑保存后会自动加密; 2.只读加密:只能查看加密文档,但不能编辑加密文档,新建的文件编辑过后不会加密; 3.智能加密:加密文档编辑保存后依然是加密文档,非加密文档编辑保存后依然是

    2024年02月11日
    浏览(63)
  • 使用Git-Crypt和GPG加密Git代码库中的敏感信息(二)

    首先获取当前机器的GPG 公钥列表 pub rsa1024/B26A154E6EE71E72 2024-02-20 [SC] [expires: 2034-02-17] 96964DABF5A3A10BE371FB34B26A154E6EE71E72 uid [ultimate] David Wang davidwang@gmail.com sub rsa1024/C1305211C9667A9E 2024-02-20 [E] [expires: 2034-02-17] 然后在代码从仓库根目录运行如下命令 git-crypt add-gpg-user B26A154E6EE71E72 这个

    2024年04月13日
    浏览(47)
  • Linux命令集(Linux文件管理命令--rmdir指令篇)

    如下为笔者总结出在 linux 中最常用的 rmdir 指令集 🌟希望能够帮助正在Linux路上奋斗的你🌟 删除空目录 短选项 长选项 描述 -p --parents 递归删除父目录中不包含子目录或文件的空目录,同时删除父目录 -v --verbose 显示当前删除目录 -- --ignore-fail-on-non-empty 忽略非空目录删除失败

    2024年02月02日
    浏览(49)
  • Linux命令集(Linux文件管理命令--CP指令篇)

    如下为笔者总结出在 linux 中最常用的 CP 指令集 🌟希望能够帮助正在Linux路上奋斗的你🌟 复制文件或目录 短选项 长选项 描述 -a --archive 复制文件或目录,保留链接、文件属性,并复制目录下的所有内容;等同于 -dpR 参数组合 -b --backup=CONTROL 创建备份文件,若目标文件已经存

    2024年02月03日
    浏览(52)
  • Linux命令集(Linux文件管理命令--rm指令篇)

    如下为笔者总结出在 linux 中最常用的 rm 指令集 🌟希望能够帮助正在Linux路上奋斗的你🌟 删除文件或目录 短选项 长选项 描述 -f --force 忽略不存在的文件,不给出提示 -i --interactive 进行交互式删除操作,删除前逐一询问确认 -r --recursive 将指定目录及其子目录递归删除 -v --

    2024年02月01日
    浏览(55)
  • Linux命令集(Linux文件管理命令--mv指令篇)

    如下为笔者总结出在 linux 中最常用的 mv 指令集 🌟希望能够帮助正在Linux路上奋斗的你🌟 移动或重命名文件或目录 短选项 长选项 描述 -b -- 在执行覆盖前,为目标文件创建一个备份 -f --force 不提示用户直接强制覆盖目标文件而进行操作 -i --interactive 如果目标文件已经存在,

    2024年02月02日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包