常见加密算法

对称加密

加密解密使用同一个秘钥,加密速度快。常见的对称加密算法有:

  • DES
  • 3DES
  • AES
  • RC4
  • RC5
  • Blowfish

AES由于得到了cpu 指令集级别的支持(AES指令集),加密速度快。优先考虑使用。

非对称加密

加密和解密使用不同密钥,也称为公私钥加密。公钥是可以公开的,保护好私钥即可。常见的非对称加密算法有:

  • RSA
  • ECC(移动设备用)
  • Diffie-Hellman
  • El Gamal
  • DSA(数字签名用)

Hash算法

与加密算法不同,Hash算法是单向。对目标信息生成一段特定长度的唯一的Hash值。常用在不可还原的密码存储、信息完整性校验等。常见的Hash算法有:

  • MD2
  • MD4
  • MD5
  • SHA-1
  • SHA-256

HMAC算法

Hmac 是 Hash based Message Authentication Code 的缩写,密钥散列消息认证码。它的出现是为了防止黑客通过彩虹表根据哈希值反推原始口令,因此在Hash算法中引入一个key,混入其中,用来保证数据的完整性,同时可以用来作某个消息的身份验证。
HMAC的加密实现:HMAC (key,message) = H ((key XOR opad) + H((key XOR ipad) + message))

  1. H是一个Hash函数, 比如MD5、SHA-1、SHA-256。
  2. key是一个密钥,从左到右用0填充到hash函数规定的block的长度,如果密钥长度大于block的长度,就对先对输入key作hash。
  3. message 是需要认证的消息。
  4. XOR 代表异或运算,
  5. opad 是外部填充常数(0x5c5c5c…5c5c,一段十六进制常量)
  6. ipad 是内部填充常数(0x363636…3636,一段十六进制常量)

参考链接

  1. 常见加密算法分类
  2. 用于消息验证的hash算法:HMAC