如何使用GPG对文件进行加密和解密

219 阅读3分钟

在Linux中,你以文件的形式保存你的数据。但是,如果你存储的数据是敏感的,怎么办?你如何保护这些数据免受未经授权的访问?其中一个方法是使用GPG对文件进行加密。在这篇博客中,我将告诉你什么是GPG,以及你如何使用它来加密和解密Linux系统中的文件。

什么是GPG密钥

GPG是GNU Privacy Guard的缩写。它使用非对称加密的概念。让我们看看非对称加密是如何工作的,它与我们通常使用的对称加密有什么不同。

对称加密中,只有一个密钥,一般称为密码,我们用它来加密/解密文件。现在的问题是,你如何在网络上与发件人/收件人分享同一个密码。这个问题在非对称加密中得到了解决。让我们看看如何解决。

非对称加密中,有一对密钥,一个是公钥,一个是私钥。所有者可以与任何想发送加密文件的人分享公共密钥。加密后的文件会被送回给所有者,而这只能由相应的私钥来解密。

GPG使用案例

  • 加密:用来加密文件。我们可以把一些内容给别人,而你不想让中间的人读到它。
  • 签署承诺:有助于证明你的身份。例如,你可以用这个GPG密钥来签署你在Github上的提交,基本上可以验证你是真正做了这件事的人。
  • 加密密码:如果你使用一个命令行密码工具,如密码管理器pass,那就非常有用。它使用你的GPG密钥来处理你想存储在该密码管理器中的所有秘密的加密问题。

安装GPG

对于Ubuntu/任何基于Debian的发行版

sudo apt install gnupg

对于基于CentOS/RHEL的发行版

分布

sudo yum install gnupg

验证安装

gpg --version

GPG命令

用默认配置生成一个新的密钥(快速密钥生成)

gpg --generate-key

## It will prompt you for the following
# Real Name
# Email Address
# Passphase

用你自己的配置生成一个新的密钥(完整密钥生成)

gpg --full-generate-key

## It will prompt you for the following
# Key Encryption Type
# Key Size
# Key Expiry
# Real Name
# Email Address
# Comment
# Passphase

列出所有GPG公钥

gpg --list-keys

列出所有的GPG私钥对

gpg --list-secret-keys

以ASCII格式导出公钥

## Output to STDOUT
gpg --armor --export <email-Id>

## Output to a file
gpg --armor --export --output <file.txt> <email-Id>

使用GPG为一个特定的用户加密一个文件(使用非对称加密法)

gpg --encrypt --recipient <recipient-user-email> <file-name>

使用GPG加密一个文件(使用对称加密)

gpg --symmetric <file-name>

## It will prompt for a password

解密该加密文件(对于对称和非对称加密)

gpg --decrypt <encrypted-file>

总结

读完这篇博客后,你将能够理解什么是GPG密钥以及为什么我们需要它们。我已经尝试涵盖了一些对初学者有用的基本命令。