PGP 加密使用

使用 gpg 工具在本地生成 PGP 密钥对,并进行文件的加密、解密、签名与验证操作。
适用于 Linux、macOS、Windows(安装 Gpg4win)。


1. 检查 gpg 是否安装

gpg --version

如未安装:


2. 生成密钥对

执行:

gpg --full-generate-key

交互流程:

  1. 选择密钥类型
    选择 1) RSA and RSA(推荐)

  2. 密钥长度
    输入 4096(推荐)

  3. 有效期
    输入 0 表示永久有效

  4. 用户信息

    • Real name: 可随意填写(如:localuser)
    • Email address: 可随意填写(如:local@secure)
    • Comment: 可留空
  5. 设置私钥保护密码

    • 可直接回车跳过

生成后可以查看:

gpg --list-keys
gpg --list-secret-keys

3. 导出密钥

导出公钥(可公开分发)

gpg --armor --export "localuser" > public.asc

生成的文件内容格式为:

-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----

导出私钥(务必妥善保管)

gpg --armor --export-secret-keys "localuser" > private.asc

生成的文件内容格式为:

-----BEGIN PGP PRIVATE KEY BLOCK-----
...
-----END PGP PRIVATE KEY BLOCK-----

4. 文件加密与解密

pgp是对整个文件字节流加密,支持所有文件类型,例如文档,二进制文件,音频视频等,不会破环原始文件。

这里以demo.md文件示例,对于文本可以添加--armor参数以文本的形式加密,生成.asc文件。本文忽略。

加密文件(使用公钥)

gpg --encrypt --recipient "localuser" demo.md

生成 demo.md.gpg,只有对应私钥持有者能解密。

解密文件(使用私钥)

gpg --decrypt demo.md.gpg > demo.md

5. 签名与验证(可选)

给文件生成签名

gpg --detach-sign demo.md

会生成 demo.md.sig

验证文件签名

gpg --verify demo.md.sig demo.md

6. 常用配置优化(可选)

~/.gnupg/gpg.conf 中添加:

default-recipient-self

这样加密文件时可以直接:

gpg -e demo.md

无需每次输入接收人。


注意事项

❤️转载请注明出处❤️