常见的加密算法主要有三种:对称加密算法、非对称加密算法和数字摘要算法。算法
特别说明,对于加密算法的没法破解,是指其在空间和时间上不具有实现的条件。如某个加密算法,采用暴击攻击,在现有的计算资源条件下,须要花费50年时间,那么就能够认为其没法破解。安全
对称加密算法也叫共享密钥加密算法、单密钥加密算法。采用单密钥的加密方法,同一个密钥能够同时用做信息的加密和解密,即解密算法为加密算法的逆算法。所以在知道了加密算法后也就知道了解密算法。函数
衡量对称加密算法优劣的取决于其密钥的长度。密钥越长,破解须要测试的密钥就越多,破解这种算法的难度就越大。其安全性取决因而否有未经受权的人得到了对称密钥。性能
对称加密算法主要有(可忽略,略知便可):测试
DES:基于使用56位密钥的对称算法,速度较快,适用于加密大量数据的场合。可是目前DES已经不是一种安全的加密方法,主要由于它使用的56位密钥太短。加密
3DES算法:三重数据加密算法,基于DES,对一块数据用三个不一样的密钥进行三次加密,强度更高,解决因计算机运算能力的加强,DES容易被暴力破解的问题。spa
AES算法:又称Rijndael加密法,用来替代DES,速度快,安全级别高,支持12八、19二、25六、512位密钥的加密。设计
RC5算法:是一种因简洁著称的对称分组加密算法,它是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数。在此算法中使用了三种运算:异或、加和循环。blog
IDEA算法:是在DES算法的基础上发展出来的,相似于三重DES,主要弥补DES密钥过短等缺点。IDEA的密钥为128位。接口
Blowfish算法:一个64位分组及可变密钥长度的对称密钥分组密码算法,可用来加密64比特长度的字符串,该算法具备加密速度快、紧凑、密钥长度可变、可无偿使用等特色,而且当前为止没有发现有效地破解方法。
非对称加密算法又叫公开密钥算法。采用的是公钥和私钥相结合的加密方法。公钥和私钥是两个彻底不一样的密钥,一个用于加密,一个用于解密。同时这两个密钥在数学上是关联的。即解密算法不是加密算法的逆算法,所以在知道了加密算法后也没法知道解密算法,保证了安全性。
在非对称加密算法中经过公钥加密的数据,只能经过私钥解开。经过私钥加密的数据,只能经过公钥解开。其主要局限在于,这种加密形式的速度相对较低,一般仅在关键时刻才使用该算法。
非对称加密算法主要有(可忽略,略知便可):
RSA算法:对极大整数作因数分解的难度决定了RSA算法的可靠性,到目前为止,世界上尚未任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息其实是不能被解破的。
Rabin算法:基于费马小定理的大素数检测算法。
El Gamal算法:是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。其安全性依赖于计算有限域上离散对数这一难题
椭圆曲线算法(ECC):是一种基于椭圆曲线数学的公开密钥加密算法。椭圆曲线算法是代替RSA的强有力的竞争者,有以下特色:安全性能更高,如160位ECC与1024位RSA、DSA有相同的安全强度;计算量小,处理速度快,在私钥的处理速度上远比RSA快得多;存储空间占用小,ECC的密钥尺寸和系统参数与RSA相比要小得多, 因此占用的存储空间小得多;带宽要求低,使得ECC具备普遍的应用前景。
又称哈希算法、散列算法,是一种单向算法,它经过对数据内容进行散列获得一个固定长度的密文信息(信息是任意长度,而摘要是定长)。即用户能够经过哈希算法对目标信息生成一段特定长度的惟一的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-22四、SHA-25六、SHA-38四、SHA-512。目前SHA-2算是安全的加密算法。
SHA-3:基于Keccak算法,是与SHA-2不一样的设计方式,可避免已有的攻击方式,并且可以提供SHA-2不具有的一些性能。
加密和解密使用相同的秘钥,容易被破解
速度比非对称加密算法快
数据传输的过程不安全
保密性比较好,消除了用户交换秘钥的须要
算法强度复杂,安全性比较强
速度慢于对称加密算法
信息是任意长度,摘要是定长的
摘要算法是防冲突的,即找不出摘要结果相同的两条信息
摘要结果是不可逆的,即没法经过摘要还原出相应的原始内容
无需进行密钥交换的场景,如内部系统,事先就能够直接肯定密钥
防止明文传输数据被窃取的
加解密速度快,适合数据内容比较大的加密场景
适用于须要密钥交换的场景,如互联网应用,没法事先约定密钥
与对称加密算法结合。利用非对称加密算法安全性较好的特色,传递对称加密算法的密钥。利用对称加密算法加解密速度快的特色,进行数据内容比较大的加密场景的加密。如HTTPS。
接口交互时,交互数据的完整性校验
数字证书的指纹生成算法
密码的正确性校验,即只须要验证密码的摘要是否相同便可确认密码是否相同,同时也保证让密码以密文保存,没法被可逆破解