数据加密(对称加密和非对称加密)

通过网络通信的五层模型(ISO规定的是七层模型,TCP/IP规定的是五层模型)可以实现两个应用程序之间的数据通信

   但是现在有个问题是 数据如何加密,总不能两个人之间说的话让第三个人活着别的人听到吧

 那最简单的例子就是:A和B之间传递数据,如何保证数据不被第三个人知道,或者说第三个人就算知道数据,但是不知道数据所代表的意思。

在传递数据时候不能避免传递的数据被别的人知道,那我们能做的就是让第三个人不知道数据所表达的意思就好了。

A 和 B 约定一套规则,A 通过这套规则将要发送的数据改变,称作加密 ,B 接受到数据,在用这套规则将数据还原成原来的数据 称作解密。这就完成了一次加密数据传输。

因为数据传输的方式无外乎就有两种形式;1.通过无线的方式,对应的就是(电磁波)。2.通过有线连接的方式(网线)数据就是转化为0,1,0,1的这种二进制来传送的。

假如A 要发送一组数据为010101010101,A约定的规则是按位取反,通过这套规则数据就变成了101010101010,将变化后的数据发送给B,B得到这个数据,通过按位取反,将这套数据变成原来的样子也就是将1010101010按位置取反变成010101010101,在这个传输过程中有人得到了这个数据,那得到的也是101010101010,他并不知道这套规则,那即使知道了数据,也并不影响什么。

在上面的过程中这套规则就叫做 ------- 公钥 ----------  

上面的过程就叫做对称加密


对称加密是一种思想,具体的实现就是算法,有很多的对称加密的算法 比如DES算法

对称的意思就是  加密和解密用的是一套规则


说到这里对称加密大体说明白了一点。但不要停下思考的步伐,那请思考一个问题

公钥加密的公钥(也就是上面所说的那一套规则)也是数据,那怎么让对方知道公钥,要是通过网络传递,那要是公钥别第三个人截获,那你所传的数据第三方就知道了。

新的问题又摆在了眼前。。。。。。怎么搞,,怎么半


这个时候非对称加密就出现了,就是这样。在一个合适的时间 出现一个合适的东西。

扯多了,回归正题:

    继续上面的情景 A 和 B 俩交流,互通数据,解决上面出现的问题那就定义两套规则,一套加密(俗称公钥),一套解密(俗称私钥),那A又一对钥匙(即就是一个公钥,一个私钥),B也有一对钥匙。如果A想要给B传数据 那就先用B 的公钥将数据加密,然后通过网络传给B。B 接受到数据后,通过自己的私钥将数据解密 ,就得到A 所传的真正的数据。 同样的道理 B 想给A传数据,那就先通过网络得到A的公钥,然后加密数据,通过网络传给A ,A得到数据后用自己的私钥解密,就可以得到B 传给A的真正的数据。

    上面的过程就是非对称加密,所谓非对称就是有两套规则,一套是公钥,一套是私钥。

    这种规则其实就是算法,当然这种非对称加密算法有很多,但是现在比较常用的就是RSA算法RSA算法

    那写到这里基本的也就差不多了。数据加密传输也就完成了,基本没什么问题,但是网络传数据当然是越快越好,那我接下来就是要写一些两个加密方式的优缺点:

    对称加密 ---------简单,因为只有一套规则。

                    --------- 速度快,因为只有一套规则。

    非对称加密  ------- 复杂,两套规则

                        --------速度慢,两套规则

那对称加密的速度快和简单的优点,我们肯定是首选这个。但是这套规则的问题就在于公钥怎么传过去?思考一下,怎么搞?

    公钥 说到底也就是数据。那数据要怎么传 !!!!! 是不是很眼熟,这不就是我们之前将的问题吗?    我们可以用非对称加密将对称加密的公钥传过去,那之前对称加密的问题不就解决了吗? 然后可以放心大胆的使用对称加密了。有没有?

    一般先都是用非对称加密将对称加密的公钥传过去,然后使用对称加密。。那数据的处理速度就很快。

    ok  就到这了……

        

上一篇:apache与nginx的默认虚拟主机的配置及作用


下一篇:FFLIB 框架Broker 之Master/Slave 模式