本文由ilanniweb提供友情赞助,首发于烂泥行天下 web
想要得到更多的文章,能够关注个人微信ilanniweb。 算法
为何要学习gpg呢?由于要在Linux下把一个邮箱的密码加密,不让其余人看到该邮箱真正的密码。 ubuntu
为了避免让其余人看到真正的邮箱密码,咱们须要对其进行加密。 centos
加密的方式是先把密码先写到一个文件A中,而后使用相关的加密软件对该文件A进行加密生成新的文件B。此时再删除文件A。 安全
其余程序调用邮箱密码时,只调用加密后的文件B,同时对文件B进行解密。 服务器
加密咱们使用的是gpg这个工具,下面咱们来介绍下gpgp。 微信
1、gpg是什么 工具
GPG是GNU Privacy Guard或GnuPG的简称,它是一种用于加密、数字签章及产生非对称匙对的加密软件。 学习
GPG使用非对称加密算法,安全程度比较高。所谓非对称加密算法,就是每个用户都拥有一对密钥:公钥和私钥。其中,私钥由用户保存,公钥则由用户尽量地分发给其余人,以便其余人与用户进行通讯。 ui
2、安装gpg
gpg的安装很是简单,在此咱们以ubuntu 14.04 server为例。以下:
sudo apt-get -y install gnupg gnupg-agent rng-tools
centos6默认已经安装gpg,还须要咱们在安装rng-tools就能够正常使用。以下:
yum -y install rng-tools
gpg安装完毕后,咱们可使用gpg --help命令查看gpg的使用方法。以下:
gpg --help
经过上图,咱们能够看到gpg有不少选项。在此咱们就不一一介绍了,下面文章中会介绍几个比较经常使用的命令。
3、建立gpg密钥对
在第一章,咱们已经介绍了gpg使用非对称加密算法。非对称加密算法须要一对密钥对:一个公钥、一个私钥。
如今咱们就来建立这对密钥,使用gpg --gen-key命令。以下:
gpg --gen-key
上面这张图中,咱们必定要选择第一项,由于只有第一项用于加密,其余几项都是用于签名。
上面这张图中,咱们根据实际状况进行选择密钥的有效期限。在此默认使用永久生效,永不过时。
上面这张图中,是配置密钥的加密长度。默认是2048bit,密钥的长度越长,加密的速度越慢。在此咱们使用的是,默认配置。
这个填写该密钥的相关用户信息。
上图中,有两个地方须要记住。第一就是设置的私钥密码,第二就是生成密钥的密钥ID。
私钥密码是解密时须要的。密钥ID是对文件进行加密须要的。
4、加密文件
密钥对建立完毕后,咱们如今来使用该密钥对一个文件A进行加密。
4.1 建立文件filea
首先建立文件filea,内容为ilannipassword。以下:
vi filea
ilannipassword
4.2 加密文件filea
文件filea建立完毕后,如今咱们来使用gpg加密文件filea。使用gpg –e命令。以下:
gpg -e -r ilanni filea
这条命令的意思是,使用ilanni这个用户的密钥对文件filea进行加密。
经过上图,咱们能够很明显的看出gpg已经把文件filea加密成新的文件filea.gpg。
如今咱们来查看下加密后的文件filea.gpg,以下:
cat filea.gpg
经过上图,咱们能够很明显的看出filea.gpg文件就是一堆乱码。这样就达到了加密的效果。
5、解密文件
文件filea被加密后造成新的文件filea.gpg,若是咱们要知道加密前文件filea的内容的话,那么就须要咱们来解密filea.gpg文件。
要解密gpg加密后的文件,咱们须要使用ilanni这个用户的公钥和私钥。
在此咱们是在ilanni这个用户密钥生成的机器A上进行解密的。若是在其余的机器B上来解密filea.gpg文件,那么就须要在B机器上把ilanni这个用户的私钥和公钥都导入进来。不然没法完成filea.gpg文件的解密。
解密filea.gpg,只须要使用gpg –d命令就好了。可是考虑到咱们程序不须要人工进行交互,因此咱们使用了以下的命令。
gpg --no-use-agent --passphrase=ilanni -q --no-tty -d filea.gpg
经过上图,咱们能够很明显的看到filea.gpg文件已经被成功解密。
6、gpg参数介绍
gpg的参数比较多,下面就稍微介绍下,常用到的几个参数。
--gen-key:生成一副新的密钥对
--fingerprint:显示指纹
--send-keys:把密钥导出到某个公钥服务器上
--recv-keys:从公钥服务器上导入密钥
-a, --armor:输出经ASCII封装
-r, --recipient USER-ID:为收件者“某某”加密
-e, --encrypt:加密数据
-d, --decrypt:解密数据
-o, --output FILE:指定输出文件
--list-keys:显示全部公钥
--list-secret-key:显示全部私钥
--delete-keys:删除公钥
--delete-secret-keys:删除私钥
--delete-secret-and-public-keys:删除公钥和私钥
--import:导入公钥和私钥
--no-use-agent:不使用用户代理
--passphrase:私钥密码
--no-tty:在执行gpg时终端不显示信息
--quiet:使用安静模式
7、gpg的其余使用方法
下面列举下gpg经常使用参数的使用案例,以下。
7.1 gpg 查看全部公钥
gpg --list-key
7.2 gpg 查看全部私钥
gpg --list-secret-key
7.3 gpg删除密钥
gpg --delete-secret-keys 01BA7978 先删除私钥
gpg --delete-keys 73391FB6      再删除公钥
也可使用一条命令所有删除,以下:
gpg --delete-secret-and-public-keys BFA7FF09
7.4 gpg导出公钥
gpg -a -o duanzhanling.asc --export BFA7FF09
7.5 gpg导出私钥
gpg -a -o duanzhanling-sec.asc --export-secret-key 0B7F4055
7.6 gpg导入密钥
导入私钥和公钥都用下面的命令gpg --import
gpg --import duanzhanling.asc   导入公钥
gpg --import duanzhanling-sec.asc   导入私钥