在加密算法之外,需要:密钥的分发。就是说解密方如何获得加密方的密钥呢?从而出现了对称加密与非对称加密。
对称加密与非对称加密:
1. 对称加密
对称加密指的就是:加密与解密使用同一个密钥。对称加密只有一个密钥,作为私钥。
常见的对称加密算法:DES,AES,3DES等等。
DES(Data Encryption Standard)算法,又被叫做美国数据库加密标准,是1972年美国IBM公司研制的对称加密算法。DES是一个分组密码算法,明文和密文的长度相同,分组长度为64位。加解密用的都是同一个密钥,密钥长度为64位,其中第8、16、24、32、40、48、56、64位是奇偶校验位,使得密钥中每8位都有奇数个1,因此,有效密钥长度为56位。分组后的明文组和56位的密钥按位替代或交换的方法得到密文组。
AES(Advanced Encryption Standard)算法,高级加密算法,是最常见的对称加密算法(微信小程序加密传输就是用的这个加密算法)。AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同。
3DES算法,也称为3DESede/TripleDES,是三重数据加密算法,相当于每个数据库应用三次DES的对称加密算法。
2. 非对称加密
非对称加密指的是:加密和解密使用不同的密钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有私钥才能解密。
常见的非对称加密算法:RSA,ECC
RSA算法(由Ron Rivest, Adi Shamir, Leonard Adleman共同提出),是目前理论和实际应用中最为成熟和完善的公钥密码体制。主要依靠分解大素数的复杂性来实现其安全性。基于一个简单的数论事实:将两个大素数相乘十分容易,但要对其乘机进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。(矛:需要更长的密钥来对抗攻击 + 盾:需要更短的密钥来保证通信效率 --> 更高效的算法)
ECC(Ellipse Curve Cryptography)算法:是一种基于椭圆曲线数学的公开密钥加密算法。基于“离散对数”这种数学难题。
区别:
对称加密算法相比非对称加密算法来说,加解密的效率要高得多。但是缺陷在于对于密钥的管理上,以及在非安全通信通道中通信时,密钥交换的安全性不能保障。所以在实际网络安全中,会将两者混合使用。