linux运维从入门到精通我用 LinuxLinux

gpg数据加密解密实例

2017-09-08  本文已影响42人  Aubin

公钥加密也称为非对称加密,公钥是成对生成的。服务器将自己的公钥公开任何主机都可以得到此公钥,私钥只能自己保存。主机使用服务器的公钥对数据进行加密,然后将数据发送给服务器,此时的数据就只有服务器的私钥可以解密。这样即使别人窃取来了数据没有私钥也无法对数据进行解密。

实验场景:CentOS7的passwd文件需要通过公网传送给CentOS6服务器,如何保证passwd文件不被公网上的恶意用户窃取?公钥加密就是一个比较好的办法。
CentOS7使用CentOS6的公钥将passwd文件进行加密,加密后的数据只有CentOS6的私钥可以界面,而拥有私钥的也只有CentOS6自己。这样即使文件在公网上恶意用户窃取也无法进行解密,保障了数据通信的安全。
实验说明:在实验当中全部使用内网环境模拟数据在公网的传输。

一、公钥的创建

分别在CentOS7与CentOS6上创建各自的公钥与私钥
使用gpg --gen-key创建公钥与私钥。创建过程中会提示你选择各种参数。我在下图中都做了详解
CentOS6与CentOS7的创建方式是一样的,所以在两边用一样的方式不一样的名称创建两个不同的密钥对。


二、分别查看CentOS6与CentOS7中生成的公钥私钥

gpg --list-key可以查看当前主机的所有公钥信息,包括自己创建的公钥,与导入的公钥。

CentOS6 CentOS7

三、发送公钥

将CentOS6的中的公钥使用scp命令复制到CentOS7中

#centos6
[root@CentOS6 /]$ gpg -a --export -o centos6.key        #导出centos6的公钥
[root@CentOS6 /]$ scp centos6.key 10.0.0.57:/app        #将centos6的公钥复制一份到centos7中

在centos7中导入centos6发来的公钥

#centos7
[root@CentOS7 /]$ gpg --import /app/centos6.key 
[root@CentOS7 /]$ gpg: key 1E6D6348: public key "centos6" imported
[root@CentOS7 /]$ gpg: Total number processed: 1
[root@CentOS7 /]$ gpg:               imported: 1  (RSA: 1)

查看已经导入的公钥信息,上面那个名为cento7的公钥信息,刚刚本机创建的公钥。下面centos6时导入后的公钥信息。



四、加密文件

使用gpg -e -r centos6命令对指定的文件进行加密, 随后系统会询问你是否使用这个公钥加密?输入y即可。加密完成后会在源文件的目录下有一个同名以gpg结尾的文件,就是加密完成的文件。你可以使用cat命令查看此文件是一堆乱码。
使用centos6的公钥加密的文件,只能有cento6的私钥解密此文件。而只有centos6自己才有私钥,所以即使别人截获此文件也是无法解密的。

#centos7
[root@CentOS6 /]$ gpg -e -r centos6 /etc/passwd        #用centos6的公钥信息加密passwd文件
[root@CentOS6 /]$ Use this key anyway? (y/N) y         #系统会会询问你是否使用这个公钥加密,y
[root@CentOS6 /]$ ls /etc/passwd.gpg                   #加密完成后的文件
[root@CentOS6 /]$ scp /etc/passwd.gpg 10.0.0.57:/app   #将加密后的文件传复制到centos6中

五、解密文件

#centos6
[root@CentOS6 /]$ gpg -d /app/passwd.gpg                    #用自己的私钥解密加密文件,默认输出到屏幕
[root@CentOS6 /]$ gpg -o /app/passwd -d /app/passwd.gpg     #用私钥解密并输出到文件中
gpg: encrypted with 1024-bit RSA key, ID D0C0C3D0, created 2017-09-08
      "centos6"

六、查看文件

查看文件可以正常显示

上一篇 下一篇

猜你喜欢

热点阅读