一、常见加密算法
1、对称加密算法
对称加密算法也叫共享密钥加密算法、单密钥加密算法。采用单密钥的加密方法,同一个密钥可以同时用作信息的加密和解密,即解密算法为加密算法的逆运算。(因此知道加密算法后也就知道了解密算法)
衡量对称加密算法的优劣取决于其密钥的长度,密钥越长,破解需要测试的密钥就越多,破解这种算法的难度就越大。其安全性取决于是否有未经授权的人获取了对称密钥。
- DES:基于使用56位密钥的对称算法,速度较快,适用于加密大量数据的场合。但是目前DES已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。
- 3DES算法:三重数据加密算法,基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高,解决因计算机运算能力的增强,DES容易被暴力破解的问题。
- AES算法:又称Rijndael加密法,用来替代DES,速度快,安全级别高,支持128、192、256、512位密钥的加密。
- RC-5算法:是一种因简洁著称的对称分组加密算法,它是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数。在此算法中使用了三种运算:异或、加和循环。
- IDEA算法:是在DES算法的基础上发展出来的,类似于三重DES,主要弥补DES密钥太短等缺点。IDEA的密钥为128位。
- Blowfish算法:一个64位分组及可变密钥长度的对称密钥分组密码算法,可用来加密64比特长度的字符串,该算法具有加密速度快、紧凑、密钥长度可变、可免费使用等特点,并且当前为止没有发现有效地破解方法。
2、非对称加密算法
非对称加密算法又叫公开密钥算法。采用的是公钥和私钥相结合的加密方法。公钥和私钥是两个完全不同的密钥,一个用于加密,一个用于解密。同时这两个密钥在数学上是关联的。即解密算法不是加密算法的逆算法,因此在知道了加密算法后也无法知道解密算法,保证了安全性。
- RSA算法:公钥加密,私钥解密,对极大整数做因数分解的难度决定了RSA算法的可靠性,到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。
- Rabin算法:基于费马小定理的大素数检测算法。
- El Gamal算法:是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。其安全性依赖于计算有限域上离散对数这一难题
- 椭圆曲线算法(ECC):是一种基于椭圆曲线数学的公开密钥加密算法。椭圆曲线算法是代替RSA的强有力的竞争者,有如下特点:安全性能更高,如160位ECC与1024位RSA、DSA有相同的安全强度;计算量小,处理速度快,在私钥的处理速度上远比RSA快得多;存储空间占用小,ECC的密钥尺寸和系统参数与RSA相比要小得多, 所以占用的存储空间小得多;带宽要求低,使得ECC具有广泛的应用前景。
3、数字摘要算法
又称哈希算法、散列算法,是一种单向算法,它通过对数据内容进行散列得到一个固定长度的密文信息(信息是任意长度,而摘要是定长)。即用户可以通过哈希算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。该算法不可逆。
数字摘要算法不可逆,是因为在计算过程中原文的部分信息是丢失了的,所以无法从一个Hash值推导出原值的(举个不一定恰当的例子,1+9,我们可以推导出结果是10,但是却无法从10推导出原文为1+9,因为部分信息的丢失,导致还有其它的可能性,比如2+8,3+7……)。理论上一个Hash值是可能对应无数多个原文的,算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同)。但是在现实中,由于原文的长度有限,所以想要出现两段原文对应同一个Hash值的是及其困难的,即几乎不会出现碰撞的情况,这就使得该算法得以在现实中可以应用。
数字摘要算法主要有(可忽略,略知即可):
- MD5:一种被广泛使用的密码散列函数,可以产生出一个128位的散列值,用于确保信息传输完整一致。王小云教授采用碰撞算法验证了MD5可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。
- SHA-1:SHA-1可以生成一个被称为消息摘要的160位散列值,散列值通常的呈现形式为40个十六进制数。SHA-1已经不再视为可抵御有充足资金、充足计算资源的攻击者。自2010年以来,许多组织建议用来SHA-2或SHA-3替换SHA1。
- SHA-2:是一种密码散列函数算法标准,其输出长度可取224位、256位、384位、512位,分别对应SHA-224、SHA-256、SHA-384、SHA-512。目前SHA-2算是安全的加密算法。
- SHA-3:基于Keccak算法,是与SHA-2不同的设计方式,可避免已有的攻击方式,而且能够提供SHA-2不具备的一些性能。
二、特点
1、对称加密算法
- 加密和解密使用相同的秘钥,容易被破解
- 速度比非对称加密算法快
- 数据传输的过程不安全
2、非对称加密算法
- 保密性比较好,消除了用户交换秘钥的需要
- 算法强度复杂,安全性比较强
- 速度慢于对称加密算法
3、数字摘要算法
- 信息是任意长度,摘要是定长的
- 摘要算法是防冲突的,即找不出摘要结果相同的两条信息
- 摘要结果是不可逆的,即无法通过摘要还原出相应的原始内容
三、适用场景
1、对称加密算法
- 无需进行密钥交换的场景,如内部系统,事先就可以直接确定密钥
- 防止明文传输数据被窃取的
- 加解密速度快,适合数据内容比较大的加密场景
2、非对称加密算法
- 适用于需要密钥交换的场景,如互联网应用,无法事先约定密钥
- 与对称加密算法结合。利用非对称加密算法安全性较好的特点,传递对称加密算法的密钥。利用对称加密算法加解密速度快的特点,进行数据内容比较大的加密场景的加密。如HTTPS。
3、数字摘要算法
- 下载文件时,文件的完整性校验
- 接口交互时,交互数据的完整性校验
- 数字证书的指纹生成算法
- 密码的正确性校验,即只需要验证密码的摘要是否相同即可确认密码是否相同,同时也保证让密码以密文保存,无法被可逆破解