惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
Engineering at Meta
Engineering at Meta
量子位
A
About on SuperTechFans
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
博客园 - 司徒正美
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
腾讯CDC
Jina AI
Jina AI
C
Check Point Blog
H
Help Net Security
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
爱范儿
爱范儿
I
InfoQ

繁星点点

最新轻量级龙虾部署教程 通过netboot.xyz重装系统 giffgaff卡保号教程 Llinux系统中全新透明代理方案(可代理所有出站流量) tailscale开启子网路由常见的坑 OpenWrt固件编译 解决UFW和Docker的问题 NSSM工具把任意exe程序注册为Windows后台服务 轻量级简约端口转发rinetd 安卓IDE的安装和使用 IP信息查询网站汇总 热点共享代理教程 SSH使用密钥认证登录详细解释 Debian系统公网IP出口切换指南,适用多IP服务器 Windows系统安装Scoop包管理器 安卓Flutter开发学习笔记 使用手机搭建节点服务端 关于github提交记录泄露真实邮箱的处理办法 anytls协议部署教程 caddy给域名用上ECH加密 通过gitlab流水线自动备份仓库 通过CF-Workers代理访问网站 低配机器使用alpine系统跑docker 端口敲门教程 3x-ui面板通过api管理示例 nmap端口扫描 数据库常用命令 snap和winget包管理器 Git推送GitHub常用命令 😩😩😩学不完,根本学不完😩😩😩
使用PGP的非对称算法加密文件
2025-08-31 · via 繁星点点

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


1. 检查 gpg 是否安装

如未安装:

  • Linux: 使用 apt install gnupgyum install gnupg
  • macOS: 使用 brew install gnupg
  • Windows: 安装 Gpg4win

2. 生成密钥对

执行:

交互流程:

  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

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

无需每次输入接收人。


注意事项

  • 公钥可公开,私钥必须保密
  • 私钥建议离线备份(如 U 盘或密码管理工具)
  • 加密后记得删除原始文件(如:shred -u demo.md
  • PGP 本质是 非对称加密 + 对称加密混合,兼顾安全性与性能