可以把非对称加密算法里的公钥想象成一个带锁的箱子,把私钥想象成一把钥匙
可以把对称加密算法里的密钥想象成箱子和钥匙的组合
HTTPS使用了非对称加密和对称加密的组合:RSA和DES的组合就是,用DES把用户数据加密,然后把DES的密钥用RSA的公钥加密,这样用户数据和DES的密钥都是安全的,就像是把用户数据锁在了DES的箱子里,然后把DES的钥匙锁在了RSA的箱子里,而RSA的钥匙在服务器端保存着,所以在运送这两个箱子的途中,数据不会被窃取,是安全的。
具体原理可以看一下阮一峰的博客文章,写的非常详细:
摘抄一些文字:
1976年以前,所有的加密方法都是对称加密算法,这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥,就成了最头疼的问题。
1976年,D和H两个人提出了非对称加密算法
1977年,R/S/A三个人设计了RSA算法,RSA算法一直是最广为使用的"非对称加密算法"。密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全
。
RSA算法的实现方式决定了公钥(n,e) 只能加密小于n的整数m,那么如果要加密大于n的整数,该怎么办?有两种解决方法:一种是把长信息分割成若干段短消息,每段分别加密;另一种是先选择一种"对称性加密算法"(比如DES),用这种算法的密钥加密信息,再用RSA公钥加密DES密钥
。