生成密钥
注意:千万不要随意更改.gnupg目录的权限,否则你的密钥将无法解密数据,提示损坏的私钥!!!
gpg生成私钥
gpg --full-generate-key
列出所有密钥
gpg --list-keys
导出密钥
gpg --export --armor keyID > gpgkey.pub.asc
导入公钥
gpg --import gpgkey.pub.asc
从服务器导入
gpg --keyserver servername --recv-keys keyID
非对称加密解密
加密文件
gpg -e -r username filename
解密文件
gpg -d filename
对称加密解密
加密文件
gpg --symmetric filename
解密文件
gpg -d filename
对文件签名
数字签名
gpg -o filename.sig -s filename
签名+加密
gpg -o filename.sig -ser name filename
文本签名
gpg -o filename.sig --clearsign filename
分离签名(原文件与签名分开)
gpg -o filename.sig -ab filename
验证签名
gpg --verify filename.sig filename
github使用gpg签名提交
1.在Github的SSH and GPG keys中,新增一个GPG key。
2.设置git使用的gpg key id。
git config --global user.signingkey {key_id}
3.用gpg key id签名
每次提交时加上-S参数
先设置git签名所用的gpg密钥ID
git config --global user.signingkey key_id
再设置git提交时使用gpg密钥进行验证
git commit -S -m "..."
全局设置每次提交时使用签名
git config --global commit.gpgsign true
本地确认github web端提交的签名信息
导入github的密钥
curl https://github.com/web-flow.gpg | gpg --import
用自己的密钥进行签名验证
gpg --sign-key {key_id}
gpg签名失败的解决方法
注意:首先检查邮箱、用户名以及signkey是否正确!
export GPG_TTY=$(tty)
之后应该可以在终端中验证gpg签名了。