加密算法可以分为两类:对称加密和非对称加密。 在密码学中,加密是将明文信息隐匿起来,使之在缺少特殊信息时不可读。 对称加密就是将信息使用一个密钥进行加密,解密时使用同样的密钥,同样的算法进行解密。 非对称加密,又称公开密钥加密,是加密和解密使用不同密钥的算法,广泛用于信息传输中
一.散列算法
散列算法以字节为计算单位,输出摘要信息
Md5
输入不固定的信息流,产生128个字节的输出,一般表示为32个16进制数据,它的特点是加密速度快,安全性中等
e10adc3949ba59abbe56e057f20f883e
SHA
是一个家族,包含SHA-1,SHA-224,SHA-256,SHA-384,SHA-512等,后面跟随的数字代表散列出来的摘要的长度.
| 类别 | 消息长度 | 计算字长 | 消息摘要长度 |
|---|---|---|---|
| SHA-1 | 小于2^64位 | 32 | 160 |
| SHA-224 | 小于2^64位 | 32 | 224 |
| SHA-256 | 小于2^64位 | 32 | 256 |
| SHA-384 | 小于2^128位 | 64 | 384 |
| SHA-512 | 小于2^128位 | 64 | 512 |
二.对称加密算法
对称加密算法就是传统的用一个密码进行加密和解密。特点,加速速度快,秘钥难以管理。N个人需要N*(N-1)/2秘钥。一般用AES
DES
密文长度为56/64位,由于密文太短可以在短时间内被暴力破解.安全性低,运算速度中等。
AES
密文长度为128/192/256。安全性高,运算速度快
- ECB模式,是最简单的AES加密模式,它只需要一个固定长度的密钥,固定的明文会生成固定的密文,这种一对一的加密方式会导致安全性降低,
- CBC模式,它需要一个随机数作为IV参数,这样对于同一份明文,每次生成的密文都不同
三.非对称加密
安全性高,秘钥管理简单,运算速度比对称加密慢很多。一般用RSA
加解密过程
- 1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。
- 2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
- 3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
- 4.A将这个消息发给B(已经用B的公钥加密消息)。
- 5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥
RSA
它是由Ron Rivest,Adi Shamir,Leonard Adleman三人一起发明的,所以用他们仨的姓的首字母缩写表示 它的安全性高,计算速度快,秘钥比较长。
ECC
安全性高,计算速度慢,秘钥短。
四.加密算法对比
散列算法
| 名称 | 安全性 | 速度 |
|---|---|---|
| SHA-1 | 高 | 慢 |
| MD5 | 中 | 快 |
对称加密算法
| 名称 | 秘钥长度 | 安全性 | 速度 |
|---|---|---|---|
| DES | 56位 | 低 | 快 |
| 3DES | 112位或168位 | 中 | 慢 |
| AES | 128、192、256位 | 高 | 快 |
非对称加密
| 名称 | 秘钥长度 | 安全性 | 速度 |
|---|---|---|---|
| RSA | 1024 | 高 | 中 |
| ECC | 160 | 高 | 慢 |
五.算法选择建议
- 对称加密: AES(128位),
- 非对称加密: ECC(160位)或RSA(1024),
- 消息摘要: MD5
- 数字签名:SHA