GPG加密/解密/密钥管理等常用命令总结分享
GnuPG,简称 GPG,用于加密、数字签名及产生非对称密钥对。这里分享了一些常用的 GPG 命令。
密钥管理篇
生成密钥
一般情况下,我们按照默认配置生成密钥对,可使用:
1 | gpg --generate-key |
如果需要手动配置更多细节,需要使用:
1 | gpg --full-generate-key |
使用专家模式,可以进行更加细节的操作:
1 | gpg --expert --full-generate-key |
列出密钥
简单地查看,只需要使用: 1
gpg -k
或者使用:
1 | gpg --list-keys |
如果需要查看子密钥的 KEYID ,则需要使用: 1
gpg -k --keyid-format SHORT(或者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 |
其中,7EBBC86694AA7E21
为主密钥的
ID。经测试,对子密钥导出公钥,得到的还是主公钥。
私钥:
1 | gpg -a -o f:\gpg_sec_key --export-secret-keys 7EBBC86694AA7E21! |
注意,ID 结尾需要加上 !,否则默认会导出全部私钥。
子私钥:
1 | gpg -a -o f:\gpg_sec_subkey --export-secret-subkeys 7EBBC86694AA37AD! |
注意,此时的 ID 应该为对应的子密钥的 ID。
吊销证书:
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入门指南(加密/签名)