0Pricing
Cryptology Academy · 课时

SHA-1 与 SHA-2 系列详解

理解 SHA-1 的弱点,以及 SHA-256 和 SHA-512 的区别

SHA-1 与 SHA-2 系列详解 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

欢迎

SHA-1 和 SHA-2 是由 NSA 设计、用于替代 MD5 的后继算法。SHA-1 现已弃用。SHA-256 和 SHA-512 仍是大多数应用所采用的行业标准。

SHA-1 概览

SHA-1 生成 160 位(20 字节)的哈希。由 NSA 设计,于 1995 年发布。示例:SHA1('hello') = aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

SHA-1 结构

SHA-1 使用 80 轮,分为 4 个阶段,每个阶段包含 20 轮。每个阶段使用不同的逻辑函数(Ch、奇偶函数、Maj)。它使用 XOR 和循环移位,将 16 个输入字扩展为 80 个。

SHA-1 碰撞:SHAttered(2017)

2017 年,Google 和 CWI Amsterdam 产生了首个实用的 SHA-1 碰撞(SHAttered 攻击)。两个 PDF 具有相同的 SHA-1 哈希,但内容不同。成本:约 6500 个 GPU 年。

SHA-2 系列

SHA-2 包括:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。它们全部采用 Merkle-Damgård 结构。SHA-256 是最常用的变体。

SHA-256 结构

SHA-256 对 512 位分组执行 64 轮处理。它维护 8 个状态字,每个为 32 位(a、b、c、d、e、f、g、h)。每一轮使用 Ch、Maj、Σ0、Σ1 函数混合输入字。

Python 中的 SHA-256

import hashlib msg = b'hello' digest = hashlib.sha256(msg).hexdigest() print(digest) # 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

SHA-512 与 SHA-256

SHA-512 使用 64 位字执行 80 轮处理,生成 512 位结果。它在 64 位硬件上速度更快,但会生成更大的摘要。当需要 256 位安全级别时,请使用 SHA-512。

SHA-3(Keccak)

SHA-3 于 2015 年标准化,作为一种替代设计。它使用海绵结构,而不是 Merkle-Damgård 结构,因此不会受到长度扩展攻击的影响。

针对 SHA-2 的长度扩展攻击

SHA-256(secret || message) 存在漏洞:知道 Hash(message) 的攻击者可以计算出 Hash(message || padding || extra)。这正是 HMAC 使用双重哈希结构的原因。

如何选择

SHA-256:适用于通用场景、TLS、证书和 HMAC。SHA-512:适用于需要更高安全裕度的应用。SHA-3:适用于不必考虑长度扩展的新协议。新设计绝不要使用 SHA-1 或 MD5。

快速检查

SHA-3 使用了什么结构,使其不会受到长度扩展攻击的影响?

回顾

您已经了解了 SHA 系列的演变。接下来我们将学习哈希的实际应用:校验和、HMAC 以及 Git 对 SHA 的使用。

常见问题解答

「SHA-1 与 SHA-2 系列详解」课时是免费的吗?

是的 — 「SHA-1 与 SHA-2 系列详解」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「SHA-1 与 SHA-2 系列详解」这节课中我会学到什么?

理解 SHA-1 的弱点,以及 SHA-256 和 SHA-512 的区别 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「SHA-1 与 SHA-2 系列详解」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 优秀哈希函数的特征
  2. MD5:历史、用途与失效原因
  3. SHA-1 与 SHA-2 系列详解
  4. 哈希应用:校验和、HMAC 与 Git
← 返回 Cryptology Academy