SHA-3(第三代安全散列算法)是美国国家标准与技术研究院(NIST)于2015年正式发布的新一代安全哈希标准。它并不是为了取代当时仍很安全的SHA-2,而是提供一个设计结构完全不同的备选方案,以增强密码学库的健壮性。
SHA-3家族的核心是Keccak算法。与前辈SHA-1、SHA-2采用的“Merkle-Damgård”结构不同,SHA-3基于全新的 “海绵构造”(Sponge Construction) 。这种结构使其对某些类型的攻击具有更强的免疫力。
站长发现:很多在线工具站点、技术文章博客网站,把 SHA3-512、SHA3-384、SHA3-256、SHA3-224 认知为加密函数,这是错误的!
🔑 SHA-3家族的四个核心成员
| 算法名称 | 输出长度 (bits) | 碰撞抵抗强度 (bits) | 简要说明 |
|---|---|---|---|
| SHA3-224 | 224 | 112 | 输出最短,适用于对存储空间或带宽有严格限制,但仍需一定安全性的场景。 |
| SHA3-256 | 256 | 128 | 最常用的标准算法之一,安全性与SHA-256相当,但设计不同。其碰撞抵抗强度为128位。 |
| SHA3-384 | 384 | 192 | 提供更高的安全余量,适合对安全性要求更高的系统。 |
| SHA3-512 | 512 | 256 | 安全等级最高,输出最长,适用于最高安全需求的场景。 |
🧬 核心特性与设计思路
- 基于“海绵构造”:这是SHA-3与SHA-2最根本的区别。它可以被想象成一个海绵,先“吸收”(absorb)所有输入数据,再“挤榨”(squeeze)出固定长度的哈希值。这种设计使其非常灵活,也为可扩展输出函数(如SHAKE128/256)奠定了基础。
- 参数化的内部状态:四个算法都基于相同的Keccak海绵函数,但通过调整 “容量”(capacity) 和 “速率”(rate) 这两个参数,实现了不同的输出长度和安全等级。
- 性能权衡:一般来说,输出长度越长,安全强度越高,但计算速度可能会略有下降。
💎 总结
SHA3-224、SHA3-256、SHA3-384和SHA3-512是SHA-3家族中四个输出长度固定的哈希函数。它们共享相同的底层算法和“海绵构造”,主要区别在于输出长度和对应的安全强度。其中,SHA3-256 是应用最广泛的算法之一。
这四个成员,加上SHAKE128和SHAKE256这两个可扩展输出函数(XOFs),共同构成了完整的SHA-3算法家族。