问题,传输内容完全透明。
原理:
f1(key,data) = X; //key为密钥,data为数据, x为密文
f2(key,X) = data;
存在问题:
所有客户端都使用同样的密钥,黑客使用客户端角色就可以拿到密钥。
原理:公钥加密,私钥解密或私钥加密,公钥解密。
f(publickey,data) = Y;
f(privatekey,Y) = data;
或
f(privatekey,data) = Y;
f(publickey,Y) = data;
即对称加密和非对称加密结合,客户端先向服务端索要公钥,并验证公钥为可信机构发放的公钥,然后客户端生成随机数,并通过公钥加密这个随机数,称会话密钥,发送给服务端,服务端用私钥对会话密钥解密,然后使用会话密钥对内容进行加密,客户端再次利用会话密钥进行解密服务端传来的消息,后面的过程通过对称加密。
-----验证公钥的证书是因为如果不进行验证存在一种可能,黑客在客户端和服务端之间伪装成客户端,又伪装成服务端,先拿到客户端数据,返回给客户端公钥,然后对客户端拿来的数据使用自己的私钥进行解密。。。 也就是伪装正常的https通信过程,在这过程中可以完全获取到数据。