0%

ubuntu下gpg的基本使用

什么是gpg

课程实验需要使用pgp对文件进行加密解密操作,pgp是一套用于消息加密、验证的应用程序,采用IDEA的散列算法作为加密与验证之用,但是pgp是商业软件不能自由使用,所以有自由软件基金会开发一个pgp的替代品,取名GnuPG,这就是gpg。

安装gpg

在ubuntu16.04下gpg已经安装好了,可以使用如下命令
gpg -h
如果输出有gpg的帮助文档,那么就有gpg,如果没有可以前往 gnupg官网 页面下载

gpg 基本使用

1.生成密钥

输入以下命令开始生成密钥对

  • gpg --gen-key *

    选择密钥种类,默认选择1,使用RSA and RSA算法,表示加密和签名都使用RSA算法

    然后选择要使用的密钥长度默认为2048,密钥长度越长,越安全,由于是课程实验,所以使用默认值

    选择密钥的有效期,由于是课程实验,所以选择永不过期,如果是要上传到服务器上,按情况自行选择有效期

    系统确认

    输入真实姓名

    电子邮箱

    注释

    然后生成用户标识

    然后系统最后确认

    接着系统让你设置一个私钥密钥,用来保护私钥

    接着系统生成密钥,需要大量的随机字节,按系统提示等一下就会生成密钥

2.检查密钥

查看本机密钥

gpg --list-keys

3.输出密钥

输出公钥

gpg -a -o public-key.txt --export [用户标识(可以是密钥id,就是使用gpg --list-key 查看到的密钥id)]

输出私钥

gpg -a -o private-key.txt --export-secret-keys

##4.上出公钥

由于是课程实验,所以并没有上传(其实是不知道什么原因,无法上传到服务器)

5.导入密钥

gpg --import [密钥文件]

也可以到公钥服务器上寻找(未验证)

gpg --keyserver hkp://subkeys.pgp.net --search-keys [用户id]

注意:

使用手动导入公钥会出现无法认证的问题,可以使用

gpg --fingerpring

打印指纹,指纹是每对密钥生成的时候生成的,查看指纹后可以通过电话或者其他方式到提供者验证指纹

然后使用以下命令

gpg --sign-key [公钥id]

或者使用如下命令删除

gpg --delete-keys [公钥id]

6.公钥加密

gpg -r [用户id] -o [输出文件] -e [加密文件]

-r 接受者的公钥的id,可以是邮箱

-o 输出加密后的文件名

-e 要执行加密操作的数据

7.解密

gpg [解密文件]

gpg 有一个默认选择 -d 默认使用你的私钥解密别人使用你的公钥解密传送过来的数据

8.数字签名

gpg -s [文件名] 生成一份签名

gpg --clearsign [文件名] 生成一份明文签名

gpg -a -b [文件名] 生成一份分离的明文签名(去掉-a就是二进制签名)

9.验证签名

gpg --verify [被签名的文件]

参考文章

http://www.ruanyifeng.com/blog/2013/07/gpg.html

http://www.williamlong.info/archives/3439.html