对称加密
加密解密使用同一个秘钥,加密速度快。常见的对称加密算法有:
- 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))
。
- H是一个Hash函数, 比如MD5、SHA-1、SHA-256。
- key是一个密钥,从左到右用0填充到hash函数规定的block的长度,如果密钥长度大于block的长度,就对先对输入key作hash。
- message 是需要认证的消息。
- XOR 代表异或运算,
- opad 是外部填充常数(0x5c5c5c…5c5c,一段十六进制常量)
- ipad 是内部填充常数(0x363636…3636,一段十六进制常量)