以下是一些个人的理解,欢迎各位一起交流和进步。
模型:
1:客户端需要先和服务器建立联系,本例使用的是使用简单socket来实现的,厉害的同学可以用nio来实现。
2:客户端向服务器发送数据,然后分为3步加密
A:客户端确定要发送的数据(明文)
B:客户端对数据(明文)进行AES加密和MD5获取摘要信息,然后利用RSA用服务器的公玥对AES所使用的对称密钥进行加密。把所有数据整合在一起。
C:客户端用自己的私玥进行整合后的密文再次进行加密,把加密后的数据发给服务器。
3:服务器接收到客户端的数据,四步解密
A:服务器用客户端的公玥进行RSA解密(认证:确定数据是来源于客户端,不是其他人的)
B:服务器用自己的私玥RSA解密出对称密钥,
C:服务器利用解出的对称密钥AES解密出明文
D:服务器利用明文进行md5信息摘要与客户端发过来的信息摘要进行对比,若一致,则正确信息是完整的,若不一致,则证明信息又丢失
笔者学识有限,若有不当的地方,欢迎指正。