什么是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
[被签名的文件]