GPG 命令简明教程#

基本操作#

1、列出系统中已有的密钥

gpg --list-keys

2、导入密钥

gpg --import filepath

3、加密

gpg -r TOM\&JERR  [-r JACK] -o testgpg.en.txt -e testgpg.txt

4、解密,注意 输出必须在前面

gpg  -o tt.txt -d testgpg.en.txt

5、签名 gpg二进制格式

gpg -r TOM\&JERRY  --sign testgpg.txt 

6、签名 文本 asc格式

gpg --clearsign testgpg.txt

7、生成单独的签名文件

gpg --detach-sign testgpg.txt

8、生成单独的文本签名文件

gpg --armor  --detach-sign testgpg.txt

9、验证

gpg --verify  testgpg.txt.gpg 

10、签名+加密

gpg -u  TOM\&JERRY  -r TOM\&JERRY --armor --sign --encrypt testgpg.txt

11、验证签名

gpg --verify testgpg.txt.sig

12、从加密文件中读取原始文件信息

gpg --list-packets oo 

高阶应用#

13、设置默认key

  • 方法1

#uid特殊符号需转义
gpg --default-key uid [other options]
  • 方法2

vi /.gnupg/gpg.conf
#uid特殊符号不必转义
default-key uid

14、编辑密钥

进入修改模式

使用默认密钥进行签名

gpg --edit-key friend_pub_key

15、查看

gpg -u jack --edit-key  abc@abc.com 
gpg (GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH


pub  ed25519/18********A76
     创建于:2025-10-19  有效至:永不       可用于:SC  
     信任度:未知        有效性:未知
sub  cv25519/C7********C9
     创建于:2025-10-19  有效至:永不       可用于:E   
[ 未知 ] (1).  abc < abc@abc.com>

gpg> list

pub  ed25519/18********A76
     创建于:2025-10-19  有效至:永不       可用于:SC  
     信任度:未知        有效性:未知
sub  cv25519/C7********C9
     创建于:2025-10-19  有效至:永不       可用于:E   
[ 未知 ] (1).  abc < abc@abc.com>

[ 未知 ] (1).  abc < abc@abc.com> 这里显示的未知,当使用朋友的公钥时会有下面提示

gpg: C7********C9:不保证这个密钥属于其声称的所有者

sub  cv25519/C7********C9 2025-10-19 abc <abc@abc.com>
 主密钥指纹: 85********76
      子密钥指纹: 59***********C9

这个密钥并不一定属于其用户标识中声称的那个人。如果您真的
知道自己在做什么,您可以在下一个问题回答 yes。

无论如何都要使用这个密钥吗?(y/N) 

使用Ubuntu的“密码和密钥”查看,注意红线圈出位置

16、添加信任

> trust

按照提示操作即可,此时信任度会变成所选,但是有效性仍是未知,可以通过tsign进行签名。如果用tsign,上面的trust可以省略

> sign/lsign/tsign

按照提示操作即可

操作完,不要忘了用 save 命令保存修改

执行后上图红线圈出位置将变化,和图形界面中点击“签署密钥”功能一致。

17、指定密钥进行编辑

使用 -u 参数

gpg -u mykeyuid --edit-key friend_pub_key 

18、吊销签名

> revsig      吊销所选用户标识上的签名

19、清理

> clean

> minimize

此时,签名虽然吊销,但是仍然可以看到,可以清理无效的签名,clean minimize,帮助中看不出二者区别,但实际上,执行后虽然都提示 用户标识 abc <abc@abc.com>:1 个签名被移除,但是clean后,签名仍然存在,不知道是不是bug。

20、delsig

delsig帮助信息是:从所选用户标识上删除签名,但实际是“删除朋友公钥 自己 的签名”。执行时提示:

> delsig 
您必须选择至少一个用户标识。 
(使用‘uid’ 命令。)

令人困惑,摸索了好久才找到操作方法。还记得前面查看密钥时[ 未知 ] (1).  abc < abc@abc.com> uid前面的(1)吗,原来是操作序号,选中后,后面会多一个*

gpg> uid 1

pub  ed25519/18********A76
     创建于:2025-10-19  有效至:永不       可用于:SC  
     信任度:未定义     有效性:未知
sub  cv25519/C7********C9
     创建于:2025-10-19  有效至:永不       可用于:E   
[ 未知 ] (1)*  abc < abc@abc.com>

gpg> delsig
uid   abc < abc@abc.com>
sig!3        18********A76 2025-10-19  [自签名]

执行后公钥不能再用来签名、加密等操作