原文地址:http://www.ittenyear.com/414/rsa/
能够把非对称加密算法里的公钥想象成一个带锁的箱子,把私钥想象成一把钥匙
能够把对称加密算法里的密钥想象成箱子和钥匙的组合
HTTPS使用了非对称加密和对称加密的组合:RSA和DES的组合就是,用DES把用户数据加密,然后把DES的密钥用RSA的公钥加密,这样用户数据和DES的密钥都是安全的,就像是把用户数据锁在了DES的箱子里,然后把DES的钥匙锁在了RSA的箱子里,而RSA的钥匙在server端保存着,所以在运送这两个箱子的途中,数据不会被窃取,是安全的。
具体原理能够看一下阮一峰的博客文章,写的很具体:
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
摘抄一些文字:
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密钥。
n的长度就是密钥长度。3233写成二进制是110010100001,一共同拥有12位,所以这个密钥就是12位。
实际应用中,RSA密钥通常是1024位,重要场合则为2048位