本文介绍密码安全相关的加密与散列算法。
目录
- 散列算法
- 加密算法
- 对称加密
- 非对称加密
散列算法
Hashing 是使用称为密码散列函数的数学函数从给定消息生成字符串或散列值的过程。
尽管散列算法有很多种,但是可以用于密码安全的散列算法必须具备以下四个主要属性:
- 确定性:相同内容的消息被相同哈希函数处理后产生的哈希值也应该相同。
- 不可逆:从哈希值无法反向生成原文。
- 具有很高的熵:对消息的较小更改将产生完全不同的哈希。
- 可以抵抗冲突:两个不同的消息不应产生相同的哈希。
常见散列算法对比:
算法 | 速度 | 安全性 |
---|---|---|
MD5 | 快 | 低 |
SHA-1 | 慢 | 中 |
加密算法
对称加密和非对称加密对比:
加密分类 | 密钥管理 | 安全性 | 加密速度 |
---|---|---|---|
对称加密 | 密钥管理困难,多用于内部系统 | 除 AES 外其它安全性较低 | 一般比非对称加密快几个数量级 |
非对称加密 | 密钥管理相对容易 | 高 | 慢,一般适用于小数据量加解密或数字签名 |
对称加密
常见对称加密算法与密钥长度选择:
算法 | 密钥长度 | 加密数据块长度 | 速度 | 说明 |
---|---|---|---|---|
DES | 64 | 64 | 慢 | 已不再安全,不建议使用 |
3DES | 112 / 168 | 64 | 很慢 | 安全级别一般,适用于小数据加密 |
AES | 128 / 192 / 256 | 128 | 快 | 安全,推荐使用 |
Blowfish | (4 至 56)* 8 | 64 | 快 | 安全性尚未被充分分析及认证 |
RC4 | 40 至 1024 | 64 | 很快 | 安全性不明确 |
非对称加密
常见非对称加密算法对比:
算法 | 成熟度 | 速度 | 安全性 |
---|---|---|---|
RSA | 成熟 | 中 | 高 |
ECC | 成熟 | 慢 | 高 |
DSA | |||
Diffie-Hellman | |||
El Gamal |
网友评论