生成密钥

注意:千万不要随意更改.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签名了。