常用的加密算法主要分为对称加密算法(DES、3DES、AES)、非对称加密算法(RSA、DSA、ECC)以及散列算法(MD5、SHA)三大类。
一、对称加密算法
对称加密算法,又称为单密钥加密或共享密钥加密,是指加密和解密使用同一个密钥的算法。常见的对称加密算法包括:
- DES(Data Encryption Standard):数据加密标准,是一种使用密钥加密的块算法,密钥长度为56位(实际密钥长度为56位,但由于存在8位奇偶校验,所以密钥长度通常为64位)。然而,由于DES的密钥长度较短,已经被认为不够安全,可以在短时间内被破解。
- 3DES(Triple DES):三重数据加密算法,是对DES算法的一种增强,使用三个56位的密钥对数据进行三次DES加密,从而增强安全性。尽管其安全性有所提升,但加密效率较慢,且被认为是DES向AES发展的过渡算法。
- AES(Advanced Encryption Standard):高级加密标准,是目前广泛使用的对称加密算法之一。AES支持多种密钥长度,包括128位、192位和256位,具有较高的安全性和加密效率。
二、非对称加密算法
非对称加密算法,又称为公开密钥加密算法,是指加密和解密使用不同密钥的算法。常见的非对称加密算法包括:
- RSA(Rivest-Shamir-Adleman):一种广泛使用的非对称加密算法,其安全性基于大数因子分解的困难性,依赖于密钥长度,建议至少使用2048位密钥。RSA算法既可以用于加密/解密数据,也可以用于数字签名和身份验证。但是RSA算法的加密和解密速度相对较慢,尤其是当密钥长度较长时。其技术成熟,兼容性好。
- DSA(Digital Signature Algorithm):DSA主要用于数字签名,以确保数据的完整性和来源的真实性。DSA的安全性基于离散对数问题的困难性,同样依赖于私钥的长度。DSA在签名和验证方面的性能通常优于RSA算法,但是DSA算法本身并不支持数据加密和解密的功能。
- ECC(Elliptic Curve Cryptography):椭圆曲线密码学,是一种基于椭圆曲线数学难题的非对称加密算法。在相同安全水平下,ECC的密钥长度远短于RSA和DSA,因此具有更高的效率,适用于资源受限的环境(如移动设备、物联网设备等),但是兼容性可能没有RSA算法好。主要用途(使用起来稍微复杂):1、密钥交换:ECDH (Elliptic Curve Diffie-Hellman);2、数字签名:ECDSA (Elliptic Curve Digital Signature Algorithm);3、加密:ECIES (Elliptic Curve Integrated Encryption Scheme)
三、散列算法
散列算法,又称为哈希算法或摘要算法,是一种将任意长度的输入通过哈希函数转换成固定长度输出的算法。散列算法的输出通常被称为哈希值或摘要。常见的散列算法包括:
- MD5:一种广泛使用的散列算法,输出长度为128位(通常以32个十六进制数表示)。然而,MD5算法已经被证明存在弱点,容易受到碰撞攻击,因此不再推荐用于安全性要求较高的场景。
- SHA(Secure Hash Algorithm):安全哈希算法系列,包括SHA-1(已被证明不够安全)、SHA-2(包括SHA-256、SHA-384、SHA-512等)等多个版本。SHA算法系列比MD5具有更高的安全性,是当前广泛使用的散列算法之一。