http://www.mamicode.com/info-detail-1846390.html
对称加密:
在对称加密中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,也可以不使用算法加密!
非对称加密:
甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密
另一方面,甲方可以使用乙方的公钥对机密信息进行加密后在发送给乙方;乙方在使用自己的密钥对数据进行解密在验证!
甲/乙方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
客户端/服务器在交换密钥时可以从中所使用的两把密钥中随便选择一把作为公钥发送给目标方!
双方优点:
对称加密不需要经过过多的数学计算,不会影响速率,而非对称加密需要经过复杂的数学计算,需要CPU ALT运算单元进行大量算数运算,会提高耗电量,降低性能,影响速率,降低网页访问速率,不过根据现在的电脑配置这些问题都不算什么,所以为什么在使用HTTP和HTTPS时感觉没用差别一样!
但是服务器只承载一个HTTPS的网站还好如果承载过多的话再好的配置也会吃不消,正所谓三个臭皮匠 胜过诸葛亮,所以不是所有网站都要用HTTPS,仅个别需要提交敏感类数据时才建议使用!
理论上 A 和 B 之间要通过 RSA 实现保密通信,需要 A 和 B 各自生成一组密钥,同时保管好自己的私钥;用对方的公钥加密要发送的消息,用自己的私钥解密对方发送过来的消息。
但是非对称加密解密算法的效率远远没有对称加密算法的效率高,所以非对称加密只是用在了加密对称密钥上,如TLS,HTTPS
都是通过非对称加密,是的通信双方协商得到一个对称加密的密钥。