简单的概念,文章可能会涉及到
- RSA——非对称加密,会产生公钥和私钥,公钥在客户端,私钥在服务端。公钥用于加密,私钥用于解密。
- AES——对称加密,直接使用给定的秘钥加密,使用给定的秘钥解密。(加密解密使用相同的秘钥)
- MD5——一种单向的加密方式,只能加密,不能解密
- Base64编码——对字节数组转换成字符串的一种编码方式
https://www.jianshu.com/p/b092b4fac27c
模型:
1:客户端需要先和服务器建立联系,本例使用的是使用简单socket来实现的,厉害的同学可以用nio来实现。
2:客户端向服务器发送数据,然后分为3步加密
A:客户端确定要发送的数据(明文)
B:客户端对数据(明文)进行AES加密和MD5获取摘要信息,然后利用RSA用服务器的公玥对AES所使用的对称密钥进行加密。把所有数据整合在一起。
C:客户端用自己的私玥进行整合后的密文再次进行加密,把加密后的数据发给服务器。
3:服务器接收到客户端的数据,四步解密
A:服务器用客户端的公玥进行RSA解密(认证:确定数据是来源于客户端,不是其他人的)
B:服务器用自己的私玥RSA解密出对称密钥,
C:服务器利用解出的对称密钥AES解密出明文
D:服务器利用明文进行md5信息摘要与客户端发过来的信息摘要进行对比,若一致,则正确信息是完整的,若不一致,则证明信息又丢失