博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
加密工作原理
阅读量:6087 次
发布时间:2019-06-20

本文共 1789 字,大约阅读时间需要 5 分钟。

最原始的数据传输方式就是明文传输。所谓“明文”就是输入什么在文件中最终也显示什么,别人获取到文件后就知道里面的全部内容了。很显然,这种数据传输方式很不安全,被非法截取后,什么都暴露了。

      随后就有了加密传输的理念及相应的技术了,对原始的明文数据进行加密,加密后生成的数据称之为“密文”。密文与明文最大的区别就是打乱了原来明文数据中字符的顺序,甚至生成一堆非字符信息(通常称之为“乱码”),其目的就是让非法获取者看不懂里面真实的数据内容,这样即使数据被非法截取了,对方也看不懂里面到底是讲什么,自然就没用了。 
     加密有两种方式:对称密钥加密和非对称密钥加密,下面分别予以介绍。 
     1. 对称密钥加密原理 
     在加密传输中最初是采用对称密钥方式,也就是加密和解密都用相同的密钥。对称密钥的加/解密过程如图1-17所示。甲与乙要事先协商好对称密钥,具体加解密过程如下(对应图中的数字序号): 
(1)甲使用对称密钥对明文加密,并将密文发送给乙。 
(2)乙接收到密文后,使用相同的对称密钥对密文解密,还原出最初的明文。 
      以上就是对称密钥加/解密原理,就两步,很简单。所以,对称密钥加密的优点是效率高,算法简单,系统开销小,适合加密大量数据。其缺点主要体现在安全性差和扩展性差。 

    图1-17 对称密钥加/解密过程示意图 
      安全性差的原因在于进行安全通信前需要以安全方式进行密钥交换(相互协商使用一致的密钥),否则被人截取后就麻烦了,别人也可以看到你的机密文件了;扩展性差表现在每对通信用户之间都需要协商密钥,n个用户的团体就需要协商n*(n-1)/2个不同的密钥,不便于管理;而如果都使用相同密钥的话,密钥被泄漏的机率大大增加,加密也就失去了意义。 
      目前比较常强的对称密钥加密算法,主要包含DES、3DES、AES算法,这些算法奖在本章后面介绍。 
       2. 非对称密钥加密原理 
      正因为对称密钥加密方法也不是很安全,于是想到了一种称之为“非对称密钥”加密(也称公钥加密)方法。所谓非对称密钥加密是指加密和解密用不同的密钥,其中一个称之为公钥,可以对外公开,通常用于数据加密,另一个相对称之为私钥,是不能对外公布的,通常用于数据解密。而且公/私钥必须成对使用,也就是用其中一个密钥加密的数据只能由与其配对的另一个密钥进行解密。这样用公钥加密的数据即使被人非法截取了,因为他没有与之配对的私钥(私钥仅发送方自己拥有),也不能对数据进行解密,确保了数据的安全。 
      非对称密钥加/解密的过程如图1-18所示。甲要事先获得乙的公钥,具体加/解密过程如下(对应图中的数字序号): 

  图1-18 非对称密钥加/解密过程示意图 
(1)甲使用乙的公钥对明文加密,并将密文发送给乙。 
(2)乙收到密文后,使用自己的私钥对密文解密,得到最初的明文。 
      非对称密钥的加/解密过程看似也很简单,也仅两步就可以实现了,但事要先不仅双方获取自己的非对称密钥,还要双方把自己的公钥告诉对方。当然,非对称密钥加/解密方式的主要优点不是体现在其过程简单,而是它具有比对称密钥加/解密方式更高的安全性,因为加密和解密用的是不同密钥,而且无法从一个密钥推导出另一个密钥,且公钥加密的信息只能用同一方的私钥进行解密。 
      非对称密钥加密的缺点是算法非常复杂,导致加密大量数据所用的时间较长,而且由于在加密过程中会添加较多附加信息,使得加密后的报文比较长,容易造成数据分片,不利于网络传输。 
      非对称密钥加密适合对密钥或身份信息等敏感信息加密,从而在安全性上满足用户的需求。目前比较常用的非对称密钥加密算法主要有DH(Diffie-Hellman)、RSA(Ron Rivest、Adi Shamirh、LenAdleman,这是三个人的名字中的第一个字母)和DSA(Digital Signature Algorithm,数字签名算法)算法。

          以上内容摘自笔者刚刚上市的华为设备著作——《华为VPN学习指南》,是国家十三五重点规划图书,是华为官方指定的ICT培训教材!本书配套实战视频课程即将发布,敬请关注本人课程中心http://edu.51cto.com/lecturer/user_id-55153.html

本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/1967446如需转载请自行联系原作者

茶乡浪子

你可能感兴趣的文章
maven项目在eclipse的library中没有Maven Dependencies
查看>>
RN初始化环境快速配置
查看>>
10.Lambda表达式入门
查看>>
maven jar 导入本地仓库
查看>>
ExtentTestNGIReporterListener
查看>>
UIView
查看>>
Layer Filters
查看>>
微信小程序 解决 数字粗细不一 的bug
查看>>
mock.js 的用法 -- 脱离后端独立开发,实现增删改查功能
查看>>
FJ省队集训最终测试 T2
查看>>
PHP csv文件内容转成数组/Json
查看>>
[结题报告]11479 - Is this the easiest problem? Time limit: 1.000 seconds
查看>>
php中使用linux命令四大步骤
查看>>
neo4j安装与示例
查看>>
ExceptionLess新玩法 — 记日志
查看>>
RabbitMQ 集群
查看>>
启动jetty命令
查看>>
C#获取当前时间与同步时间
查看>>
端口被占用了,使用netstat找到占用端口的进程
查看>>
springboot的profile配置
查看>>