甲有一份文件,不想被别人看到,甲用一把钥匙锁进保险柜里,只有甲的钥匙能打开。
甲想让乙看到他的秘密,于是给乙配了一把钥匙,这时,乙也能看到甲的秘密了,丙和丁不能看见。
对称加密(也叫私钥加密),就是指加密和解密使用相同密钥的加密算法。
这时甲有两个秘密了,想分别给乙和丙看。怎么办呢?在配一把钥匙给丙么?不行,因为这样,乙和丙都能看见两份文件。
只能为每一份机密建立一个保险柜再分发给对应的人。
那么问题来了,一个机密对应一把钥匙,一把钥匙必须给到指定的人(如果钥匙给错了,乙拿到了保险柜2的钥匙是打不开的)。那么,钥匙的管理就会很麻烦。
密钥难于管理。
同时要让乙看见机密,甲需要把钥匙送给他,钥匙是没有保护的(明文发送),那么在送去的路上有可能就被丁劫持,丙配了一把相同的钥匙。那么乙和丁都能看见该机密了。
对称加密不适合在公网上传输。
当然,对称加密的优势是:
计算量小
加密速度快
甲有一对钥匙,一把公钥负责往保险柜里放东西,但是不能取(负责加密)。一把私钥,负责从宝箱柜里取东西(负责解密)。
甲把公钥给了乙和丙,乙和丙都可以用公钥往宝箱柜放机密,但是没法打开宝箱柜。只有甲的私钥能打开保险柜,查看里面的机密。
如果丁把公钥劫持了,是看不见宝箱柜的内容的,因为只有私钥能打开。
非对称加密的缺点是,加密效率很低。
乙用对称加密,将机密放进保险柜里
对称加密不是不安全么,加生成一对非对称加密的钥匙,并把公钥给到乙
乙用甲给的公钥将对称加密的钥匙加密,甲用私钥取到对称加密的钥匙,打开机密。
保证传输安全的同时,也结合了二者的优势。
利用对称加密速度快的特性,加密大文件。用非对称加密的公钥对对称加密的钥匙进行加密,虽然非对称加密速度慢,但是对称加密的钥匙很短,所以性能可以忽略。用非对称加密后的钥匙进行网络传输,保证了就算被人劫持,也无法拿到钥匙。