本文根据 Devhints / GnuPG 翻译。代码示例及版本范围沿用原文。原文标注更新日期:2017-10-22。
GnuPG 是 OpenPGP 标准的一个完整且免费的实现。
基础
导出密钥
gpg -o key.gpg --export <KEY ID>
导出 ASCII 密钥:
gpg -o key.asc --armor --export <KEY ID>
注意: 如果省略 -o|--output 选项,密钥将直接输出到 stdout.
导入密钥
gpg --import key.gpg
gpg --import key.asc
仅合并密钥环中已有密钥的更新:
gpg --import key.asc --import-options merge-only
管理密钥环
生成新密钥:
gpg --gen-key
# or, generate a new key with dialogs for all options
gpg --full-gen-key
列出公钥:
gpg -k
gpg --list-keys
列出私钥:
gpg -K
gpg --list-secret-keys
使用密钥服务器
从密钥服务器导入密钥:
gpg --receive-keys <KEY IDS>
将密钥上传至密钥服务器:
gpg --send-keys <KEY IDS>
从密钥服务器获取密钥环中已有密钥的更新:
gpg --refresh-keys
从密钥服务器搜索密钥:
gpg --search-keys "<SEARCH STRING>"
覆盖密钥服务器设置 ~/.gnupg/gpg.conf
gpg --keyserver <URL> ...
信任密钥
gpg --edit-key <KEY ID>
# In the interactive prompt:
gpg> trust
gpg> save
NOTE: 在执行以下操作时,可以使用所有者的电子邮件或姓名(或其部分)来代替 ID 密钥: --edit-key
加密
公钥加密
这将生成一个加密文件, secret.txt.gpg,该文件只能由接收者解密:
gpg -e -o secret.txt.gpg -r <RECIPIENT> secret.txt
For <RECIPIENT> 您可以使用对方的密钥ID、其电子邮件地址或其姓名(或姓名的一部分)。
gpg -e -r <KEY ID> ...
gpg -e -r "Bez" ...
gpg -e -r "bezalelhermoso@gmail.com" ...
指定多个收件人
gpg -e -r <RECIPIENT> -r <ANOTHER RECIPIENT> ... secret.txt
NOTE:省略 -o|--output 将生成一个名为……的加密文件 <ORIGINAL FILENAME>.gpg 。
对称加密
使用共享密钥加密文件。系统会提示您输入密码短语。
gpg --symmetric secret.txt
# or
gpg -c secret.txt
解密
解密文件
gpg -d -o secret.txt secret.txt.gpg
如果文件是通过对称加密方式加密的,系统会提示您输入密码短语。
NOTE:省略 -o|--output 将把解密后的内容输出到 stdout
签名与验证
签名
gpg -o signed-file.txt.gpg -s file.txt
在加密过程中,也可以同时对加密文件进行签名:
gpg -s -o secret.txt.gpg \
-r <RECIPIENT> secret.txt
验证签名
gpg --verify file.txt.gpg
查看已签名文件的内容
gpg -d signed-file.txt.gpg
其他
组件
列出所有组件:
gpgconf --list-components
终止某个组件:
gpgconf --kill <COMPONENT> # i.e. gpgconf --kill dirmngr
终止所有组件:
gpgconf --kill all
解析密钥环数据
使用 --with-colons 生成易于解析的输出 i.e。使用 awk, grep。各字段以冒号分隔。
gpg -k --with-colons
字段快速参考:
| 字段编号 | 说明 |
| 1 | 记录类型 |
| 2 | 有效性 |
| 3 | 密钥长度(位) |
| 4 | 公钥算法 |
| 5 | 密钥 ID |
| 6 | 创建日期 |
| 7 | 到期日期 |
| 8 | 证书序列号、UID 哈希值、信任签名信息 |
| 9 | 所有者信任度 |
| 10 | 用户 ID |
| 11 | 签名类别 |
| 12 | 关键功能 |
| 13 | 发行方指纹 |
| 14 | 标志字段 |
| 15 | 令牌序列号 |
| 16 | 哈希算法 |
| 17 | 曲线名称 |
| 18 | 合规标志 |
| 19 | 最后更新时间戳 |
| 20 | 来源 |
参见 GnuPG 详情 以了解更多详情。