加密

200 阅读2分钟

加密算法里的数字,一般指的是比特数,所以字节数要除以8,比如 SHA256,指的就是256比特,32字节。

对称加密:算法简单,运算效率高,密钥容易被窃取,导致加密效果不强。典型代表AES。

非对称加密:算法复杂,运算效率低,私钥必须保密,公钥任意分发。典型代表RSA。

摘要算法:保证数据的完整性,但不具备机密性。常见的是 MD5\SHA1\SHA2,其中MD5\SHA1的抗碰撞性低,SHA2抗碰撞性高,而SHA2分为SHA224\SHA256\SHA384

公钥加密,私钥解密,是为了数据安全。

私钥加密,公钥解密,是为了身份认证。因为公钥大家都只可以拿到,也就是说都可以解密,那这种操作唯一能确认的就是,这份数据是来自私钥持有方,也就是认证了身份。

HTTPS:非对称加密+对称加密

非对称加密算法非常复杂,效率很低,对称加密效率高。为了兼顾安全和效率,可以在服务端先用RSA私钥加密 AES 的密钥,传给RSA公钥持有方,这样就保证了AES密钥的安全性,然后后续的消息使用AES加密来收发。https就是基于这种原理。

数字签名:解决了摘要的机密性问题,也就是说保证了数据没有被篡改,同时也进行了身份认证。

比如使用RSA私钥加密MD5(这一步叫签名),然后发给客户端,客户端使用RSA公钥解密出MD5(这一步叫验签),然后跟自己计算的MD5比对,如果相同则表示数据没有被篡改。

HTTPS的机制,需要解决一个问题,就是在第一步客户端的公钥证书是不是真的证书,有没有被伪造过?这就是数字签名。比较复杂。