gpg常用命令
0x01
创建密钥对,期间会被要求输入密码用于保护密钥
1  | gpg --full-gen-key  | 
导出私钥/公钥
1  | gpg -a --export-secret-key [keyID/email] > secret.key  | 
导入私钥/公钥,导入私钥需要输入保护私钥的密码,公钥也能从密钥服务器导入
1  | gpg --import [secret.key/other's-public-key-file]  | 
列出所有私钥/公钥
1  | gpg -K/--list-secret-keys  | 
公钥上传到密钥服务器
1  | gpg --keyserver [keyserverAddress] --send-keys [keyID/email]  | 
--keyserver为可选项,[keyserverAddress]可不带前缀
gpg在--keyserver缺省时,默认使用https://keys.openpgp.org/ 作为密钥服务器,通过命令行--send-keys或网页上传公钥后,站点会发送验证邮件,15分钟有效。
吊销公钥证书
1  | #生成吊销证书  | 

删除私钥/公钥,先删私钥再删公钥
1  | gpg --delete-secret-keys [keyID]  | 
公钥指纹,用于判断导入的公钥是否正确
1  | gpg --fingerprint [UserID]  | 
修改密码
1  | gpg --list-keys  | 
0x02
加密,需提前导入接收者公钥
1  | gpg --encrypt [filename]  | 
–recipient,指定接收者公钥?
解密
1  | gpg [filename.encrypt]  | 
签名,包含原文件
1  | #生成以二进制储存的[filename].gpg文件  | 
签名,原文件和签名分开,分离式签名
1  | #生成单独的[filename].sig签名文件  | 
验证
1  | #包含原文件和签名  | 
签名并加密
1  | gpg -u/--local-user [发件人UserID/email] -r/--recipient [收件人UserID/email] -a/--armor -s/--sign -e/--encrypt doc  | 
--local-user,用(自己)发件人的私钥签名--recipient,用(对方)收件人的公钥加密--armor,采用ASCII码形式显示--sign,需要签名--encrypt,指定源文件
接收人解密并验证gpg test.sig
0x03
public/private key,fingerprint, keyID相互关系
- public/private key 是密钥对
 - public key很长,一般通过文件的形式存放和传播
 - public key在哈希后得到40个字符长度的fingerprint
 - fingerprint的后16个字符为keyID