主要分为:
- 对称加密算法
是加密和解密使用相同密钥的加密算法
用于解决身份伪装问题 - 非对称加密算法
是加密和解密使用不同密钥的加密算法
公钥存放在客户端, 私钥存放在服务端.
客户端通过公钥加密信息, 服务端通过私钥解密信息.
非对称加密算法远低于对称加密算法
用于解决身份伪装,密钥配送问题 - 消息摘要算法
也称为 Hash 算法, 杂凑算法, 是单向不可逆算法
消息摘要跟消息长度无关, 最终能得到固定长度的散列值
主要解决消息篡改问题
1. 数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签名 是非对称密钥加密技术与数字摘要技术的应用.
作用是:它会将报文使用一定的HASH算法算出一个固定位数的摘要信息,然后使用私钥将摘要加密,然后会将刚才的报文一起发送给接收者,接收者会通过公钥将摘要解出来。也通过hash算法算出报文摘要,如果两个摘要一致,说明数据未被篡改,说明数据是完整的。
2. 数字证书
数字证书是互联网通讯中标志通讯各方身份信息一串数字。提供了一种在Internet上验证通信实体身份的方式。
它是由CA颁发给网站的一种身份的方式。它里面包含了该网站的公钥、有效时间、网站的地址、及 CA的数字签名等。
作用是:它是使用CA的私钥将网站的公钥等信息进行了签名,当客户端请求服务器端的时候,网站会把证书发给客户端,客户端先通过CA的数字签名校验CA的身份,来证明证书的真实完整性。
3. 常见加密算法
3.1. 对称加密
- DES
DES是一种将64比特的明文加密成64比特的密文的对称密码算法,它的密钥长度是56比特。尽管从规格上来说,DES的密钥长度是64比特,但由于每隔7比特会设置一个用于错误检查的比特,因此实质上其实密钥长度是56比特。由于DES的密文可以在短时间内被破译,因此除了用它来解密以前的密文以外,现在我们不应该使用DES了。 - 3DES
三重DES是为了增加DES的强度,将DES重复3次所得到的一种密码算法,也称为TDEA,通常缩写为3DES。尽管三重DES目前还被银行等机构使用,但其处理速度不高,除了特别重视向下兼容性的情况以外,很少被用于新的用途。 - AES
AES(Advanced Encryption Standard)是取代其前任标准(DES)而成为新标准的一种对称密码算法(Rijndael)。Rijndael是由比利时密码学家Joan Daemen和Vincent Rijmen设计的分组密码算法,于2000年被选为新一代的标准密码算法——AES。Rijndael的分组长度和密钥长度可以分别以32比特为单位在128比特到256比特的范围内进行选择。不过在AES的规格中,分组长度固定为128比特,密钥长度只有128、192、和256比特三种。 - DESX
- Blowfish
- IDEA
- RC4
- RC5
- RC6
3.2. 非对称加密
- RSA
RSA是一种公钥密码算法,它的名字是由它的三位开发者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏的首字母组成的(Rivest-Shamir-Adleman)。RSA的加密是求“E次方的 mod N”,而解密则是求“D次方的 mod N” - ECC(移动设备用)
椭圆曲线密码
它的特点是所需的密钥长度比RSA短。椭圆曲线密码是通过将椭圆曲线上的特定点进行特殊的乘法运算来实现的,它利用了这种乘法运算的逆运算非常困难这一特性。 - Diffie-Hellman
- El Gamal
- Fiat-Shamir
- Guillou- Quisquarter
- Schnorr
- Ong-Schnorr-Shamir
- DSA(数字签名用)
ECDSA
3.3. 消息摘要
-
MD2
-
MD4
-
MD5
能够产生128比特的散列值
MD5的强抗碰撞性已经被攻破。也就是说,现在已经能够产生具备相同散列值的两条不同的消息,因此它也不安全了。 -
HAVAL
-
SHA
SHA-1 一种能够产生160比特的散列值的单向散列函数。 SHA-256, SHA-384、SHA512 是散列值长度分别为256, 384, 512比特
SHA-1的强抗碰撞性已于2005年被攻破,不过,SHA-2还尚未被攻破 -
CRC
循环冗余校验算法, 常用于检查数据存储或数据传输时是否出错.
特点是: 检错能力强,开销小.
常见有 CRC16, CRC32
4. 其他衍生算法
4.1. MAC
消息认证码(Message Authentication Code)是一种确认完整性并进行认证的技术,简称为MAC。
消息认证指的是“消息来自正确的发送者”这一性质。消息认证码的输入包括任意长度的消息和一个发送者与接受者之间共享的密钥,它可以输出固定长度的数据,这个数据成为MAC值。
要计算MAC必须持有共享密钥,没有共享密钥的人就无法计算MAC值,消息认证码正是利用这一性质来完成认证的。此外,和单向散列函数的散列值一样,哪怕消息中发生1比特的变化,MAC值也会产生变化,消息认证码正是利用这一性质来确认完整性的。消息认证码可以说是一种与密钥相关联的单向散列函数。
消息认证码可以使用单向散列函数和对称密码等技术来实现。
- HMAC
- HMAC-MD5
- HMAC-SHA1