##什么是GPG


1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP

这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。

但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,

开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。GPG有许多用途,本文主要介绍文件加密。

至于邮件的加密,不同的邮件客户端有不同的设置,请参考Ubuntu网站的介绍。

本文的使用环境为Linux命令行。如果掌握了命令行,Windows

Mac OS 客户端,就非常容易掌握。GPG并不难学,学会了它,

从此就能轻松传递加密信息。建议读者一步步跟着教程做,

对每条命令都自行测试。


##GPG安装

 1.源码安装(下载源码包) 

    ./configure
      make
      make install

  

 2.yum源安装         

        yum install gnupg


##GPG使用

查看帮助    

gpg --help

生成非对称加密钥 

  gpg --gen-key

列出所有的公钥  

gpg -k

        

列出所有的私钥    

     gpg -K

      

列出密钥

 gpg --list-keys

  显示结果:        

pub   2048R/A70E5CB4 2016-04-22 [expires: 2016-04-29]
uid                  doyle (test user) <doyle@qq.com>
sub   2048R/9359FCC8 2016-04-22 [expires: 2016-04-29]
pub   2048R/93999488 2016-04-22 [expired: 2016-04-23]
uid                  doyle (123) <doyle@qq.com>
pub   2048R/C1EA0413 2016-04-23 [expires: 2016-04-25]
uid                  doyle (doyle)   <doyle@qq.com>
           sub   2048R/A23752C0 2016-04-23 [expires: 2016-04-25]

加密文件  

gpg --recipient 标识名 --encrypt 文件名
     列如:gpg --recipient doyle --encrypt aa.txt

解密文件

  

       gpg --output 新文件名 --decrypt 加密文件名     
       列如:gpg --output ss --decrypt aa.gpg


密钥导入  


       

gpg --import 密钥文件
        例如:gpg --import gpgkey.pub.asc

公钥删除

   

      gpg --delete-keys 标识名
      例如:
         gpg --delete-keys doyle
gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
pub  2048R/A70E5CB4 2016-04-22 doyle (test user) <doyle@qq.com>
Delete this key from the keyring? (y/N) y

私钥删除    

      gpg --delete-secret-keys 标识名
例如: gpg --delete-secret-keys 93999488


签名认证

     

  

  gpg --sign-key id         用自己的私钥对B的公钥进行签名,以后就不用再确认
  例如:gpg --sign-key doyle

查看签名的所有密钥和被签名的密钥

gpg --list-sigs

编辑对密钥的信任度


gpg --edit-key id


数字签名

gpg -o 原文件和签名 -s  原文件


分离式签名

   gpg -o 目标文件 -ab  源文件

验证签名

  

     gpg --verify doc.sig [doc]
验证之前必须导入文件作者的公钥,对于分离式签名,最后还要加上原文件,即后面的doc。

例一:压缩加密


zip -e 目标文件名字 文件名字
unzip 文件名字   --------->输入正确密码解压


列二: 对文件进行加密


gpg -c abc.txt          对文件加密
gpg -d abc.txt.gpg   对文件解密


列三: 通过文件进行加密

   gpg -o abc.txt -d abc.txt.gpg    对文件解密到abc.txt (-o选项的位置是固定的)


***gpgcheck =1 会在yum安装的时候进行签名验证

如果yum.repogpgcheck=1 ,下面还要加一行是gppgkey 的位置

gpgkey的位置在:vim /iso/RPM-GPG-KEY-redhat-release

rpm --import /iso/RPM-GPG-KEY-redhat-release     将红帽系统的公钥导入到rpm数据库中***