对称加密与非对称加密


对称加密:

     优点: 对称加密是最简单的一种加密方式,加密和解密用的是同一个秘钥,由于它的效率高,所以频繁被用到加密文件中。

但是对称加密的秘钥管理很难。

     缺点:通常在传送公钥时容易被截获,所以一般采用非对称加密的方式来传送公钥。

语法:

          gpg  -c   文件                           加密文件

          gpg   -d  加密的文件               解密文件

           gpg    -o   新文件名(此文件存储本次解密的文件)-d  加密的文件       解密文件到指定文件中

实例:

  

[root@name ~]# cat hello.txt 
1728473902
[root@name ~]# gpg -c hello.txt         #加密hello.txt文件,此过程需要自己设定密码
can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory
Xlib:  extension "RANDR" missing on display "localhost:11.0".

(pinentry-gtk-2:121525): GLib-GObject-CRITICAL **: Object class GtkSecureEntry doesn't implement property 'editing-canceled' from interface 'GtkCellEditable'
Xlib:  extension "RANDR" missing on display "localhost:11.0".

(pinentry-gtk-2:121528): GLib-GObject-CRITICAL **: Object class GtkSecureEntry doesn't implement property 'editing-canceled' from interface 'GtkCellEditable'
[root@name ~]# ll hello.txt.gpg       #加密后文件自动添加了后缀
-rw-r--r--. 1 root root 59 Sep  1 19:21 hello.txt.gpg
[root@name ~]# cat hello.txt.gpg         #cat被加密的文件,打开乱码
kQ?㟉*Ѱ®чd-x®wC¶ƭ2¢tϨJՏb8[root@name ~]# 

[root@name ~]# gpg -d hello.txt.gpg       #解密被加密的文件,此过程需要输入设定的密码
gpg: 3DES encrypted data
can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory
Xlib:  extension "RANDR" missing on display "localhost:11.0".

(pinentry-gtk-2:121548): GLib-GObject-CRITICAL **: Object class GtkSecureEntry doesn't implement property 'editing-canceled' from interface 'GtkCellEditable'
gpg: encrypted with 1 passphrase
1728473902                    #解密出的内容
gpg: WARNING: message was not integrity protected
[root@name ~]# gpg -o new.txt -d hello.txt.gpg     #将解密的文件存入new.txt文件中,相当于重定向到new.txt文件中,也可以这样表示:gpg -d hello.txt.gpg > new.txt
gpg: 3DES encrypted data
can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory
Xlib:  extension "RANDR" missing on display "localhost:11.0".

(pinentry-gtk-2:121595): GLib-GObject-CRITICAL **: Object class GtkSecureEntry doesn't implement property 'editing-canceled' from interface 'GtkCellEditable'
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected
[root@name ~]# cat new.txt          #打开解密后的文件
1728473902

 非对称加密:

       优点: 非对称加密为数据的加密与解密提供了安全的方式,它使用一对秘钥,公钥和私钥,公钥可以让任何人获取;但是公钥加密的数据只能由私钥来解密。若两个人通信则都使用对方的公钥来加密数据即可

      缺点:耗费时间较长

      语法:

     centos6 生成公私钥:
                 gpg --gen-key     (根据提示生成公私钥)
     公私钥存储的目录:
                 /root/.gnupg
    查看公私钥:
                gpg -k/-K
   centos7生成公私钥
             gpg --gen-key      (根据提示生成公私钥)

  公私钥存储的目录:
     /root/.gnupg
 查看公私钥:
     gpg -k/-K

从cennos6中将公钥导出
    gpg  -a --export  -o  文件名c6(此文件存储导出的centos6公钥)
将centos6的公钥传给centos7
    利用scp将   文件名c6(上步的文件。即存储centos6公钥的文件)传给centos7
centos7将centos6的公钥(上步传的文件,文件名c6)添加到自己的公钥文件中
     gpg --import  文件名c6(上步的文件)
     gpg -k(查看一下)
用centos6的公钥加密文件
    gpg -e -r  公钥名(centos7导入centos6的公钥)          文件(centos7要加密的文件)
将加密的文件传给centos6
利用scp将centos7利用centos6的公钥加密的文件传给centos6
centos6解密
gpg -o 新文件(解密的内容存储文件) -d 加密的文件
查看解密文件
cat 新文件  (上步的新文件)

实例:

[root@centos6 ~]# gpg --gen-key     #centos6需要在虚拟机上操作此步骤
[root@centos6~]# ll .gnupg/
total 32
-rw-------. 1 root root 7856 Sep  1 19:55 gpg.conf
drwx------. 2 root root 4096 Sep  1 19:55 private-keys-v1.d
-rw-------. 1 root root 1166 Sep  1 19:56 pubring.gpg
-rw-------. 1 root root 1166 Sep  1 19:56 pubring.gpg~
-rw-------. 1 root root  600 Sep  1 19:56 random_seed
-rw-------. 1 root root 2544 Sep  1 19:56 secring.gpg
-rw-------. 1 root root 1280 Sep  1 19:56 trustdb.gpg
[root@centos6~]# gpg -k            #查看centos6的公钥
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/DCB153F8 2018-09-02
uid                  centos6
sub   2048R/29FFD23F 2018-09-02

[root@centos6~]# gpg -K            #查看centos6的私钥
/root/.gnupg/secring.gpg
------------------------
sec   2048R/DCB153F8 2018-09-02
uid                  centos6
ssb   2048R/29FFD23F 2018-09-02
[root@centos7~]# gpg --gen-key       #centos7公私钥的生成;可以在Xshell中操作
[root@centos7~]# gpg -k               #查看centos7的公钥
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/F6CD18D0 2018-09-02
uid                  centos7
sub   2048R/79FAF346 2018-09-02

[root@centos7~]# gpg -K                 #查看centos7的私钥
/root/.gnupg/secring.gpg
------------------------
sec   2048R/F6CD18D0 2018-09-02
uid                  centos7
ssb   2048R/79FAF346 2018-09-02
[root@centos6~]# gpg -a --export -o public.txt               #centos6生成公钥文件    
[root@centos6~]# scp public.txt root@172.18.251.133:/root    #centos6的公钥发送centos7
[root@centos7~]# gpg --import public.txt         #centos7导入centos6的公钥到自己的公钥中
gpg: key DCB153F8: public key "centos6" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
[root@centos7~]# gpg -k                     #centos7再次查看自己的公钥
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/F6CD18D0 2018-09-02
uid                  centos7
sub   2048R/79FAF346 2018-09-02

pub   2048R/DCB153F8 2018-09-02
uid                  centos6
sub   2048R/29FFD23F 2018-09-02

[root@centos7~]# echo "hello" > centos6.txt   #centos7生成要加密的文件
[root@centos7~]# gpg -e -r centos6 centos6.txt   #centos7用centos6的公钥加密文件

[root@centos7~]# cat centos6.txt.gpg   #查看加密的文件,发现乱码
 
ݶ)ÿG¸6)k
        %@p*/
             *µܔɪоݨ(
) ໯1ccɍ¢ᦹ⚸ћ7C¦^+"՘<9>ʁ§GI4-U¸ \fí9؄f]䩷㚾V¥ؐ{;k̀8谶0'u離Y¯ꇪϙV*ĥRˡ¤|*x߽º-¡͈l:M 5E
   W6»wহa¥Z=D퇠ޱpd,"͠@ьŖ˓ϋ£×i䆺

¼mR堐¡H'Aa֠?½㝺>*eg£ƚI[root@localhost ~]# Xshell
[root@centos7~]# scp centos6.txt.gpg root@172.18.254.27:/root       #centos7将加密的文件发给centos7
[root@centos6~]# gpg -o centos.txt -d centos6.txt.gpg   #centos6加密文件
[root@centos6~]# cat centos.txt           #centos6打卡解密后的文件
hello

对称加密与非对称加密的效率对比:

#非对称加密和解密所用的时间
[root@centos6 ~]# ll -h access_log1
-rw-r--r--. 1 root root 7.0M Sep  1 20:24 access_log1
[root@centos6 ~]# scp access_log1 root@172.18.251.133:/root
[root@centos7 ~]# time gpg -e -r cetnos6 access_log1 

real	0m1.611s
user	0m0.056s
sys  	0m0.006s
[root@centos7 ~]# scp access_log1.gpg root@172.18.254.27:/root
[root@centos6 ~]# time gpg -d access_log1.gpg >/dev/null

real	0m3.600s
user	0m0.333s
sys	    0m0.010s

#对称加密和解密的时间
[root@centos6 ~]# time gpg -c access_log1
real	0m8.131s
user	0m0.300s
sys	    0m0.001s
[root@centos6 ~]# time gpg -d access_log1.gpg >/dev/null
eal  	0m2.595s
user	0m0.295s
sys	    0m0.001s

centos7利用centos6的公钥加密来实现非对称加密所用的时间sys  0.006s,而centos6利用对称加密所用的时间  sys  0.01s;

centos6解密利用非对称加密的问价所用的时间  sys  0.001s,而centos6利用非对称加密所用的时间  sys  0.001s

总结:由以上的例子可以看出,非对称加密和解密耗时较长,不利于通信的速率,但是安全性比较好,而对称加密相反,

         加密和解密的速度很快,但是容易被其他人窃取公钥,所以应该利用非对称加密来加密对称加密的公钥,然后在利用对称加密来实现通信。

补充:

time:

real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。

user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。

sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值