GPG加密/解密/密钥管理等常用命令总结分享

GnuPG,简称 GPG,用于加密、数字签名及产生非对称密钥对。这里分享了一些常用的 GPG 命令。

密钥管理篇

生成密钥

一般情况下,我们按照默认配置生成密钥对,可使用:

1
gpg --generate-key

如果需要手动配置更多细节,需要使用:

1
gpg --full-generate-key

列出密钥

简单地查看,只需要使用:

1
gpg -k

或者使用:

1
gpg --list-keys

如果需要查看子密钥的 KEYID ,则需要使用:

1
gpg -k --keyid-format LONG

编辑密钥

主要命令格式(示例):

1
gpg --edit-key 7EBBC86694AA7E21

修改信任度:输入 trust 然后回车

添加子密钥:输入 addkey 然后回车

编辑完成后,应输入 save 以保存并退出

导入密钥

(以下为示例)

导入公钥:

1
gpg --import ~/mygpgkey_pub.gpg

导入私钥:

1
gpg --allow-secret-key-import --import ~/mygpgkey_sec.gpg

从服务器搜索公钥:

1
gpg --keyserver hkp://keyserver.ubuntu.com --search-keys hui-shao
注意将 "hui-shao" 替换为你所需要搜索的 id

导出密钥

(以下为示例)

主公钥:

1
gpg -a -o f:\gpg_pub_key.pub --export 7EBBC86694AA7E21

私钥:

1
gpg -a -o f:\gpg_sec_key --export-secret-keys 7EBBC86694AA7E21

子私钥:

1
gpg -a -o f:\gpg_sec_subkey --export-secret-subkeys 7EBBC86694AA7E21

吊销证书:

1
gpg -o f:\gpg_revocation  --generate-revocation 7EBBC86694AA7E21

注:命令中的 -a 参数指定了以 ASCII 码格式导出,-o 参数指定了导出的文件名

私钥 与 吊销证书 应当严格保密

删除密钥

(以下为示例)

删除公钥:

1
gpg --delete-keys 7EBBC86694AA7E21

删除私钥:

1
gpg --delete-secret-keys 7EBBC86694AA7E21

上传密钥

上传公钥至服务器(示例):

1
gpg --send-keys 7EBBC86694AA7E21 --keyserver hkp://subkeys.pgp.net

应用操作篇

文件加密

命令示例:

1
gpg -o test_out.zip -r 74A64469 -e test.zip

其中,-r 用于指定接收用户的 id,-o 指定输出文件名(进行加密时可选择不指定该参数,默认会在文件名末尾加上“.pgp”后缀)

当加密文本文件时,建议加入 -a 参数,便于文本的传递分享

注意,所有选项都应该添加在 -e 之前

文件解密

命令示例:

1
gpg -o test.7z -d test.7z.pgp

注意,解密非文本类文件时,建议加入 -o 参数,否则默认会将解密的内容在控制台输出

文件签名

命令示例:

1
gpg --sign test.txt

以上命令生成的是一个二进制文件,若需要生成 ASCII 码的签名文件,应使用:

1
gpg --clearsign test.txt

(该方法比较适合用于文本的签名)

若需生成单独的签名文件,与文件内容分开存放,可以使用:

1
gpg -a --detach-sign test.txt
-a 指定生成 ASCII 码的签名文件)

验证签名

命令示例:

1
gpg --verify test.txt.asc test.txt

签名并加密

命令示例:

1
gpg --local-user [发信者ID] --recipient [接收者ID] --armor --sign --encrypt test.txt

The End

参考资料:GPG入门指南(加密/签名)