gnupg

简介

GnuPG 是一个用于加密、签名和生成密钥的软件包。它支持多种加密算法,包括 RSA、DSA、ElGamal、AES、Blowfish 等。

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# 生成新的密钥对(交互式向导)
gpg --full-generate-key

# 快速生成默认密钥(非交互式)
gpg --quick-gen-key "Your Name <email@example.com>" rsa4096

# 列出所有公钥
gpg --list-keys
# 或简写
gpg -k

# 列出所有私钥
gpg --list-secret-keys
# 或简写
gpg -K

# 查看密钥详细信息(包括指纹)
gpg --list-keys --with-colons --fingerprint


# 导出 ASCII 格式的公钥
gpg --armor --export your@email.com > public_key.asc

# 导出特定密钥 ID 的公钥
gpg --armor --export KEY_ID > public_key.asc

# 导出私钥(包含公钥)
gpg --armor --export-secret-keys your@email.com > private_key.asc

# 仅导出私钥(不含公钥)
gpg --armor --export-secret-keys your@email.com > master_key.asc

# 导入公钥或私钥
gpg --import key_file.asc

# 从密钥服务器导入
gpg --recv-keys KEY_ID
gpg --keyserver hkps://keys.openpgp.org --recv-keys KEY_ID

# 用对方公钥加密(只有对方能解密)
gpg --encrypt --recipient "Recipient Name" file.txt
# 生成 file.txt.gpg

# 用对称加密(密码保护,无需密钥)
gpg --symmetric file.txt
# 生成 file.txt.gpg

# 加密并签名
gpg --encrypt --sign --recipient "Recipient Name" file.txt

# 加密为 ASCII 格式(适合邮件)
gpg --armor --encrypt --recipient "Recipient Name" file.txt
# 生成 file.txt.asc

# 解密文件
gpg --decrypt file.txt.gpg > decrypted.txt

# 自动识别并解密
gpg --decrypt file.txt.gpg

# 删除密钥
# 第一步:列出所有密钥,确认要删除的密钥 ID
gpg --list-secret-keys --keyid-format=long

# 第二步:删除私钥
gpg --delete-secret-key KEY_ID

# 第三步:删除公钥
gpg --delete-key KEY_ID