常用加密方式:1、对称加密 2、非对称加密
项目功能:秘钥生成、秘钥检验
秘钥产生---->用到秘钥协商系统,该密钥是对称秘钥
项目需求提炼、项目子系统划分、项目的开发经历经验、第三方库的积累、对API的上手能力、快速阅读代码能力、阅读业务能力、处理问题的思维能力
代码看不懂不要紧,会用就行!!
项目整体结构图:
总体流程:
1、客户端发起秘钥协商请求,发送给服务端的随机字符串为abc
2、服务端收到客户端随机字符串之后,自己也生成一个随机字符串123,且将123发送给客户端
3、服务端将abc123作为生成秘钥的原材料,通过使用某种算法生成一个新的秘钥
4、客户端收到123之后进行组合abc123,与服务端使用相同的算法生成与服务端相同的新的秘钥
5、当客户端和服务端都生成秘钥后通过秘钥校验验证客户端和服务端生成密钥一致
6、客户端和服务端将秘钥写入共享内存
7、可以封装读共享内存的接口函数,防止误读
用到的知识点:
1、网络通信:socket API TCP/IP 多进程 多线程 多路复用+多进程 第三方库
服务端基本开发流程:1、socket 2、setsockopt 3、bind 4、listen 5、while{}
客户端基本开发流程:1、socket 2、connect 3、while{}
2、报文编解码:跨平台
3、进程间通信:pipe fifo mmap 本地套接字 共享内存
4、数据库操作相关:oracle的occi库
5、QT相关
6、服务端守护进程的创建步骤
7、信号相关:SIGUSR1 SIGUSR2
8、shell编程
9、加密算法相关
10、c++基础的概念:封装、继承、多态
子系统划分:
1、密钥协商客户端子系统
2、秘钥协商服务端子系统
3、客户端信息注册报备图形化界面
模块划分:
1、报文编解码模块
2、网络通信模块
3、共享内存操作模块
4、数据操作模块
5、对外接口
数据的加密和解密
加密三要素:
1、明文/密文
2、加密算法/解密算法:互逆
3、秘钥:该秘钥不是加密算法提供的,是由用户提供的
常用的加密解密方式:
1、对称加密:加密和解密使用的是同一个密钥
特点:秘钥分发困难、加密效率高
2、非对称加密:加密和解密所使用的秘钥不同---是一个秘钥对
公钥:可以公开的秘钥
私钥:不能公开
传输数据对谁重要,谁就拿私钥
使用公钥加密,使用私钥解密;使用私钥加密,使用公钥加密
应用场景:开通网银会的到一个U盾,私钥,银行拿的是公钥
特点:秘钥分发简单,加密效率低,强度高
常用加密算法:
DES-破解了 3DES-效率低
对称加密算法:AES:使用最广泛的对称加密算法 密钥要求:16/24/32 秘钥越长,加密效率越低、但是安全性高
TDEA、Blowfish等.......
非对称加密算法:RSA:数字签名和密钥交换、等 。。。。
hash算法--->单向散列函数(还原不了):不是用于加密的:将任意长度的数据,生成一个固定长度字符串 MD4/MD5:16字节
Git学习