【前端知识】常见的加密算法介绍
- 1 常见的加密算法
- (1)哈希函数
- (2)对称加密
- (3)非对称加密
- (4)消息认证码(MAC)
- 2.总结
1 常见的加密算法
略微介绍一下前端中常见的加密算法。前端中常见的加密算法主要形式包括——哈希函数,消息认证码,对称加密和非对称加密算法,其中:
(1)哈希函数
图片来源于:知乎yaoyao——区块链100讲:盘点那些常用的加密算法原理
-
定义:哈希也叫散列,是指将任意长度的消息映射为固定长度的输出的算法,该输出一般叫做散列值或者哈希值,也叫做摘要(Digest)。简单来说,这种映射就是一种数据压缩,而且散列是不可逆的,也就是无法通过输出还原输入。
-
特点:不可逆性(单向性)、抗碰撞性(消息不同其散列值也不同)、长度固定
-
常见应用场景:由于不可逆性,常用于密码存储、数字签名、电子邮件验证、验证下载等方面,更多的是用用在验证数据的完整性方面。
- 密码存储:明文保存密码是危险的。通常我们把密码哈希加密之后保存,这样即使泄漏了密码,因为是散列后的值,也没有办法推导出密码明文(字典攻击难以破解)。验证的时候,只需要对密码(明文)做同样的散列,对比散列后的输出和保存的密码散列值,就可以验证同一性。
- 可用于验证下载文件的完整性以及防篡改:比如网站提供安装包的时候,通常也同时提供md5值,这样用户下载之后,可以重算安装包的md5值,如果一致,则证明下载到本地的安装包跟网站提供的安装包是一致的,网络传输过程中没有出错。
-
优势:不可逆,速度快、存储体积小,可以帮助保护数据的完整性和减轻篡改风险。
-
缺点:安全性不高、容易受到暴力破解
图片来源于:知乎码农StayUp——一文搞懂单向散列加密:MD5、SHA-1、SHA-2、SHA-3 -
常见类型:SHA-512、SHA-256、MD5(MD5生成的散列码是128位)等。
- MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。
- SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个固定位数的数值。
- SHA/MD5对比:SHA在安全性方面优于MD5,并且可以选择多种不同的密钥长度。 但是,由于内存需求更高,运行速度可能会更慢。 不过,MD5因其速度而得到广泛使用,但是由于存在碰撞攻击风险,因此不再推荐使用。
(2)对称加密
-
定义:指加密和解密使用同一种密钥的算法。
图片来源于:简书 SwiftGo——对称加密、非对称加密、数字签名 -
特点:优点是速度快,通信效率高;缺点是安全性相对较低。信息传输使用一对一,需要共享相同的密码,密码的安全是保证信息安全的基础,服务器和N个客户端通信,需要维持N个密码记录且不能修改密码。
-
优势:效率高,算法简单,系统开销小,速度快,适合大数量级的加解密,安全性中等
-
缺点:秘钥管理比较难,密钥存在泄漏风险。
-
常见应用场景:适用于需要高速加密/解密的场景,例如 HTTP 传输的 SSL/TLS 部分,适用于加密大量数据,如文件加密、网络通信加密、数据加密、电子邮件、Web 聊天等。
- 文件加密:将文件用相同的密钥加密后传输或存储,只有拥有密钥的用户才能解密文件。
- 数据库加密:对数据库中的敏感信息进行加密保护,防止未经授权的人员访问。
- 通信加密:将网络数据通过对称加密算法进行加密,确保数据传输的机密性,比较适合大量短消息的加密和解密。
- 个人硬盘加密:对称加密可以为硬盘加密提供较好的安全性和高处理速度,这对个人电脑而言可能是一个不错的选择。
这里说一下,为什么上面提到,这是因为笔者我购买的加密移动硬盘就是采用AES加密的(这里不是广告),前段时间突然忘记密码,结果去查询了一下硬盘的加密算法,可以看到商品界面采用的就是AES加密方式:
- 常见类型:DES,3DES,AES 等
- DES(Data Encryption Standard):分组式加密算法,以64位为分组对数据加密,加解密使用同一个算法,速度较快,适用于加密大量数据的场合。
- 3DES(Triple DES):三重数据加密算法,是基于DES,对每个数据块应用三次DES加密算法,强度更高。
- AES(Advanced Encryption Standard):高级加密标准算法,速度快,安全级别高,目前已被广泛应用,适用于加密大量数据,如文件加密、网络通信加密等。
- AES与DES区别
AES与DES之间的主要区别在于加密过程。在DES中,将明文分为两半,然后再进行进一步处理;而在AES中,整个块不进行除法,整个块一起处理以生成密文。相对而言,AES比DES快得多,与DES相比,AES能够在几秒钟内加密大型文件。- DES
- 优点:DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。
- 缺点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。
- AES
- 优点:运算速度快,对内存的需求非常低,适合于受限环境。分组长度和密钥长度设计灵活, AES标准支持可变分组长度;具有很好的抵抗差分密码分析及线性密码分析的能力。
- 缺点:目前尚未存在对AES 算法完整版的成功攻击,但已经提出对其简化算法的攻击。
- DES
(3)非对称加密
-
定义:指加密和解密使用不同密钥的算法,通常情况下使用公共密钥进行加密,而私有密钥用于解密数据。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密,那么只有对应的私钥(不能公开)才能解密,反之亦然。
图片来源于:简书 SwiftGo——对称加密、非对称加密、数字签名 -
特点:缺点是加密解密速度较慢,通信效率较低,优点是安全性高,需要两个不同密钥,信息一对多。因为它使用的是不同的密钥,所以需要耗费更多的计算资源。服务器只需要维持一个私钥就可以和多个客户端进行通信,但服务器发出的信息能够被所有的客户端解密,且该算法的计算复杂,加密的速度慢。
-
优势:秘钥容易管理,不存在密钥的交换问题,安全性好,主要用在数字签名,更适用于区块链技术的点对点之间交易的安全性与可信性。
-
缺点:加解密的计算量大,比对称加密算法计算复杂,性能消耗高,速度慢,适合小数据量或数据签名
-
常见应用场景:在实际应用中,非对称加密通常用于需要确保数据完整性和安全性的场合,例如数字证书的颁发、SSL/TLS 协议的加密、数字签名、加密小文件、密钥交换、实现安全的远程通信等。
- 数字签名:数字签名是为了保证数据的真实性和完整性,通常使用非对称加密实现。发送方使用自己的私钥对数据进行签名,接收方使用发送方的公钥对签名进行验证,如果验证通过,则可以确认数据的来源和完整性。常见的数字签名算法都基于非对称加密,如RSA、DSA等。
- 身份认证:Web浏览器和服务器使用SSL/TLS技术来进行安全通信,其中就使用了非对称加密技术。Web浏览器在与服务器建立连接时,会对服务器进行身份验证并请求其证书。服务器将其证书发送给浏览器,证书包含服务器的公钥。浏览器使用该公钥来加密随机生成的“对话密钥”,然后将其发送回服务器。服务器使用自己的私钥解密此“对话密钥”,以确保双方之间的会话是安全的。
- 安全电子邮件:非对称加密可用于电子邮件中,确保邮件内容只能由预期的收件人看到。发件人使用收件人的公钥对邮件进行加密,收件人使用自己的私钥对其进行解密。这确保了只有目标收件人才能读取邮件。
-
常见类型:RSA,DSA,DSS,ECC 等
- RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。RSA 是一种非对称加密算法,即加密和解密使用一对不同的密钥,分别称为公钥和私钥。公钥用于加密数据,私钥用于解密数据。RSA 算法的安全性基于大数分解问题,密钥长度通常选择 1024 位、2048 位或更长。RSA 算法用于保护数据的机密性、确保数据的完整性和实现数字签名等功能。
- DSA(Digital Signature Algorithm):数字签名算法,仅能用于签名,不能用于加解密。
- ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
- DSS:数字签名标准,可用于签名,也可以用于加解密。
(4)消息认证码(MAC)
消息认证码(MAC)是一个用于进行身份验证和保护消息完整性的算法。 HMAC 使用密钥结合哈希函数来产生验证码,以确保发送方的信息被接收方正确识别且不会受到任何未经授权的更改或篡改。