C++实战项目第一弹

数据_____基础设施平台 

以数据安全传输基础设施平台为例

正常两个APP数据进行传输过程:APP1到APP2,然后APP2加工后传输到APP1,这个过程被称为socket

有了安全传输平台后两个APP数据进行传输过程:APP1通过安全传输平台加密,然后传输到APP2,APP2得到的数据通过安全传输平台解密,加工,然后传回再传到APP1中。

这里涉及到了加密和解密的知识:

(1)加密三要素:  a)  明文和密文 ;b) 算法 ;c) 密钥        Y = ax+b

           三者之间的关系:    明文    用  密钥  通过    算法    加密   得到    密文。

(2)加密分类:

                    对称加密: 加密的密钥和解密的密钥 一致

                               优点:  加密速度快、加密效率高

                               缺点:加密强度低、安全性差。密钥的分发困难。

                               应用场景:  文件加密、数据加密

                     非对称加密:加密的密钥和解密的密钥 不一致  (公钥    私钥)

                               优点:   加密强度高、安全性好    密钥的分发容易。

                               缺点: 加密速度慢、加密效率低 

                               应用场景:进行身份鉴别、密钥保护

假如说有数据加密的两端:   加密端     解密端,两端的密钥都是abc123,

现在想要abc123这个密钥在两端产生出来,通常的想法就是用网络将密钥从解密端传输到加密端

但是这样安全是没办法保证的,一旦过程中被窃取,就gg了,所以不能直接传输。

企业里常用的方法是:在解密端产生abc然后通过之前建立好的通路将abc传输给加密端,加密端产生123,生成密钥之前协商好一个算法,在生成密钥过程中算法固定,对于加密端来说,有了解密端给的abc 自己还产生了123 ,就可以通过算法生成密钥 a1b2c3,然后再把自己产生的123发一份给解密端,于是解密端的密钥也出来了a1b2c3 。---这个过程被称为socket  但是这里的socket和之前的socket可不一样。

为了解决密钥的分发困难的问题,可以在安全传输平台里加入server端  client端(当然了这只是一种称呼方式)

所谓的server端不过是一台PC主机上跑了服务器进程而已

而所谓的client端不过是同一台PC主机上跑了客户端进程而已

server端  产生一部分密钥abc     client端产生一部分密钥123   , 然后进行socket通信 ,先要建立TCP/IP。于是两端就通过固定算法产生了一样的密钥,那么问题来了,产生的密钥肯定是要用的,那放哪呢?

如果存数据库,那每次加密都要去数据库里读取,效率不高。因为数据库在打开和关闭的时候效率最低。数据库检索的过程就是解析语句的过程还好,但是打开关闭数据库内存资源消耗最大,所以尽可能的减少数据库的多次访问。

所以可以用内存来存储密钥,调用密钥进行加密,server、client、APP1都是进程,进程与进程之间用什么传输>>>管道、信号、mmap、socket,这里用mmap   共享内存

那么应用程序如何使用呢?就是给安全传输平台安装两个函数接口,一个函数接口进行加密,一个进行解密

密钥不可能一直不变把,那么密钥怎么更新呢?客户端和服务器的密钥都应该是随机数,更换算法来生成新的随机数,老的密钥是要存贮的,铁定不能放到共享内存里,就要引入数据库,

引入数据库的目的都是为了数据持久化存储

引入共享内存的目的就是提高访问效率

-------------------------------------------------------------------------------------------------------------------

今天先到这

你可能感兴趣的:(C++入门到大神的见证专栏,c++)