常见的加密
常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6;
常见的非对称加密有 RSA、ECC(椭圆曲线加密算法)、Diffie-Hellman、El Gamal、DSA(数字签名用);
HTTPS加密
在 https 的加密中,加密传输的数据本身使用的是对称加密,加密对称秘钥时使用的非对称加密。
整个过程是这样的:server 端先生成一对非对称秘钥,将可以公开的公钥发送给 client 端,client 端也决定此次数据传输使用的对称加密算法和对称秘钥,然后利用 server 端给的公钥,对对称秘钥进行加密传输。server 端接受到 client 端发送的对称加密算法和秘钥后,server 端和 client 端的数据传输都使用这个对称秘钥和算法进行对称加密。
整个过程中即便 server 端的公钥被中间人知道了内容,但是没有保存在 server 端的私钥,你是无法破译使用公钥加密的对称秘钥的。公钥原本就是可以被随意公开的,拿到也没用,解密需要的是私钥。
非对称加密或者说公钥加密之所以能保证加密安全就是因为私钥是保密不公开的,攻击者没有私钥无法破译。
疑问1-为什么需要使用非对称加密对对称秘钥加密呢?
答:因为交换对称秘钥时可能被第三方窃取,对称秘钥被窃取了那对称加密就没意义了。
疑问2-为什么不直接使用非对称加密来加密传输内容而只是加密对称秘钥?非对称加密不是对称加密更安全吗?
答:这就和对称加密与非对称加密的特点有关系了。见第二部分。
非对称加密 和 对称加密 的区别
1、对称加密是一个秘钥,非对称加密是一对,两个秘钥;
2、非对称加密比起对称加密更安全,因为不存在秘钥泄露问题,公钥即便被知道也没关系;
3、由于使用非对称加密在计算上特别复杂,所以一般来说对称加密的加密解密的速度相对于非对称加密快很多;
4、非对称秘钥还可以用于认证;
由于以上第三条,所以在 https 中传输数据时不会使用非对称加密加密传输数据,传输数据时有可能数据本身很大,那样的话非对称加密更耗时了,所以传输数据时不会使用非对称加密的方式加密。