加密算法

299 阅读3分钟

加密算法可以分为两类:对称加密和非对称加密。 在密码学中,加密是将明文信息隐匿起来,使之在缺少特殊信息时不可读。 对称加密就是将信息使用一个密钥进行加密,解密时使用同样的密钥,同样的算法进行解密。 非对称加密,又称公开密钥加密,是加密和解密使用不同密钥的算法,广泛用于信息传输中

一.散列算法

散列算法以字节为计算单位,输出摘要信息

Md5

输入不固定的信息流,产生128个字节的输出,一般表示为32个16进制数据,它的特点是加密速度快,安全性中等
e10adc3949ba59abbe56e057f20f883e

SHA

是一个家族,包含SHA-1,SHA-224,SHA-256,SHA-384,SHA-512等,后面跟随的数字代表散列出来的摘要的长度.

类别消息长度计算字长消息摘要长度
SHA-1小于2^64位32160
SHA-224小于2^64位32224
SHA-256小于2^64位32256
SHA-384小于2^128位64384
SHA-512小于2^128位64512

二.对称加密算法

对称加密算法就是传统的用一个密码进行加密和解密。特点,加速速度快,秘钥难以管理。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

对称加密算法

名称秘钥长度安全性速度
DES56位
3DES112位或168位
AES128、192、256位

非对称加密

名称秘钥长度安全性速度
RSA1024
ECC160

五.算法选择建议

  • 对称加密: AES(128位),
  • 非对称加密: ECC(160位)或RSA(1024),
  • 消息摘要: MD5
  • 数字签名:SHA