哈希算法
一个合格的哈希算法要满足什么目标?
- 确定性: 相同的输入永远得到相同的输出;
- 效率高: 计算开销小, 不拖慢哈希表本身;
- 平均分布: 输出尽量均匀, 减少冲突;
哈希算法有哪些应用领域?
- 密码存储: 存储口令的哈希值而不是明文;
- 数据完整性检查: 比较哈希值判断内容是否被改动;
哈希算法的安全标准是什么?
- 抗碰撞性: 难以找到两个不同输入产生相同的输出;
- 雪崩效应: 输入的微小变化导致输出显著变化;
常用哈希算法如何比较?
| MD5 | SHA-1 | SHA-2 | SHA-3 | |
|---|---|---|---|---|
| 推出时间 | 1992 | 1995 | 2002 | 2008 |
| 输出长度 | 128 bits | 160 bits | 256 / 512 bits | 224/256/384/512 bits |
| 哈希冲突 | 较多 | 较多 | 很少 | 很少 |
| 安全等级 | 低, 已被成功攻击 | 低, 已被成功攻击 | 高 | 高 |
| 应用 | 已被弃用, 仍用于数据完整性检查 | 已被弃用 | 加密货币交易验证, 数字签名等 | 可用于替代 SHA-2 |