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