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入门指南(加密/签名)