常见加密算法
算法整体上可以分为不可逆加密,以及可逆加密,可逆加密又可以分为对称加密和非对称加密。
不可逆算法
不可逆加密的算法的加密是不可逆的,密文无法被还原 成原文。
散列算法,就是一种不可逆算法。散列算法中,明文通过散列算法生成散列值,散列值是长度固定的数据,和明文长度无关。
散列算法的具体实现有很多种,常见的包括MD5、SHA1、SHA-224、SHA-256等等。
散列算法常用于数字签名、消息认证、密码存储等场景。
散列算法是不需要密钥的,当然也有一些不可逆算法,需要密钥,例如HMAC算法。
对称加密算法
对称加密算法,使用同一个密钥进行加密和解密。
加密和解密过程使用的是相同的密钥,因此密钥的安全性至关重要。如果密钥泄露,攻击者可以轻易地破解加密数据。
常见的对称加密算法包括DES、3DES、AES等。其中,AES算法是目前使用最广泛的对称加密算法之一,具有比较高的安全性和加密效率。
非对称加密算法
非对称加密算法需要两个密钥,这两个密钥互不相同,但是相互匹配,一个称为公钥,另一个称为私钥。
使用其中的一个加密,则使用另一个进行解密。例如使用公钥加密,则需要使用私钥解密。
RSA
RSA算法是是目前应用最广泛的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三人在1978年发明,名字来源三人的姓氏首字母。
RSA算法的优点是安全性高,公钥可以公开,私钥必须保密,保证了数据的安全性;可用于数字签名、密钥协商等多种应用场景。
缺点是加密、解密速度较慢,密钥长度越长,加密、解密时间越长;密钥长度过短容易被暴力破解,密钥长度过长则会增加计算量和存储空间的开销。
总结
这一期就给大家简单盘点了一下最常用的5种加密算法。
其实,论到加密解密算法的应用,有一个东西,可以说是应用到了极致,它是什么呢?
—— HTTPS
我们简单回忆一下HTTPS的工作流程,和用到的加密算法:
- 客户端发起HTTPS请求:用户使用浏览器输入网址访问HTTPS站点,准备发起HTTPS请求
- 服务端提供证书:服务器返回公钥证书,证书包含了服务器的公钥、颁发者(证书颁发机构)等信息
- 客户端验证证书:浏览器验证证书的有效性、合法性、来源等,校验证书的过程用到了非对称加密和散列算法
客户端使用证书颁发机构的公钥对证书进行验证,保证证书的真实性和合法性
客户端使用证书中的公钥对服务端的数字签名进行验证,保证服务器的身份和数据的完整性。
客户端使用散列算法计算出散列值,和证书种的散列值进行对比,保证证书的完整性 - 客户端生成对称密钥:客户端生成一个随机数,作为对称密钥
- 对称密钥加密传输:客户端使用服务器的公钥对随机数进行加密,然后将加密后的信息传输给服务器
- 服务端获取对称密钥:服务端使用私钥解密客户端发送的对称密钥,得到对称密钥
- 客户端与服务器使用对称密钥进行通信:服务器与浏览器都使用对称密钥对数据进行加密和解密,以此确保数据传输的安全性。
- 在数据传输的过程中,也用到了散列算法:
消息摘要:在数据传输过程中,客户端和服务器都使用散列算法计算消息的散列值,对方收到消息后,会对散列值进行比较,确保传输数据的完整性。
客户端生成对称密钥:客户端生成一个随机数,作为对称密钥
总之,HTTPS使用了对称加密算法、非对称加密算法、散列算法来保证数据的安全性和完整性,从而确保了通信双方的身份和数据的安全。