0Pricing
Cyber Security Academy · 课时

哈希函数:SHA-256 及更进一步

探索密码学哈希的特性:抗碰撞性、抗原像性及其应用。

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

什么是密码哈希函数

密码哈希函数接收任意长度的输入,并生成固定长度的输出(摘要)。它必须具备以下特性:确定性、计算速度快、抗原像攻击(无法逆向还原)、抗碰撞(无法找到具有相同哈希值的两个输入),并且对雪崩效应敏感(输入的微小变化会产生完全不同的哈希值)。

SHA-2 系列

SHA-2 系列(由 NSA 设计,并由 NIST 标准化)包括:

  • SHA-256 — 256 位输出,应用广泛
  • SHA-384 — 384 位输出
  • SHA-512 — 512 位输出,在 64 位 CPU 上速度更快

SHA-256 用于 Bitcoin、TLS 证书和 Git 提交标识符。

SHA-3 系列

SHA-3 使用了与 SHA-2 完全不同的设计(Keccak 海绵结构)。它被标准化为备用方案,以防发现 SHA-2 存在弱点。SHA-3 尚未得到广泛部署,但已用于某些密码协议和硬件。

MD5 和 SHA-1:已破解

绝不要将 MD5 或 SHA-1 用于安全用途:

  • MD5:使用普通硬件几秒内即可找到碰撞
  • SHA-1:2017 年首次展示了实用的碰撞攻击(SHAttered)

它们仍可用于非安全用途的校验和(文件去重),但不能用于提供完整性保证。

哈希的用途:文件完整性

验证下载内容:

sha256sum ubuntu-24.04.iso
# Compare with the hash published on the official site
# If hashes match, file is unmodified

哈希的用途:数字签名

签署文档时,我们不会使用私钥加密整个文档(速度太慢)。相反,我们会:

  1. 对文档进行哈希处理(速度快)
  2. 使用私钥加密哈希值(数据小、速度快)
  3. 接收方使用公钥解密,并将结果与自行计算的哈希值进行比较

HMAC:用于完整性的带密钥哈希

HMAC(基于哈希的消息认证码)将哈希函数与秘密密钥结合,生成认证标签。它用于验证数据的完整性和真实性。HMAC 用于 JWT、API 认证和 TLS。

import hmac, hashlib
mac = hmac.new(key, message, hashlib.sha256).hexdigest()

哈希长度扩展攻击

SHA-2(Merkle-Damgård 结构)容易受到长度扩展攻击:如果知道 H(secret+message),即使不知道秘密,也可以计算出 H(secret+message+extension)。HMAC 可以防止这种攻击。SHA-3 不易受到此类攻击。

彩虹表与加盐

彩虹表预先计算哈希值到输入的映射,以便快速查找。加盐可以防止这种攻击:为每个输入添加唯一的随机值,使每个哈希值都不同,从而要求对每个条目进行完整的暴力破解,而不能直接查表。

Merkle 树

Merkle 树是一种哈希树,其中每个父节点都是其子节点的哈希值。它用于 Bitcoin 区块链、Git 和证书透明度日志,可以高效验证大型数据集,而无需下载全部数据。

选择合适的哈希函数

选择指南:

  • 通用完整性校验/校验和:SHA-256
  • 密码存储:Argon2id、bcrypt(直接使用 NOT SHA-256)
  • 消息认证:HMAC-SHA-256
  • 数字签名:使用 SHA-256 或 SHA-384 作为底层哈希函数
  • 避免使用:在安全应用中使用 MD5、SHA-1

快速检查:哈希函数

哪种结构既能防止长度扩展攻击,又要求使用秘密密钥?

课程回顾

哈希函数根据任意输入生成固定长度的摘要。SHA-256 和 SHA-512 是当前标准。MD5 和 SHA-1 已不适合安全用途。HMAC 添加秘密密钥,以提供经过认证的完整性。密码应使用 Argon2/bcrypt。Merkle 树扩展了哈希的应用,可高效验证大型数据集。

常见问题解答

「哈希函数:SHA-256 及更进一步」课时是免费的吗?

是的 — 「哈希函数:SHA-256 及更进一步」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。

「哈希函数:SHA-256 及更进一步」这节课中我会学到什么?

探索密码学哈希的特性:抗碰撞性、抗原像性及其应用。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cyber Security Academy 需要有经验吗?

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

「哈希函数:SHA-256 及更进一步」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 对称加密:AES 与流密码
  2. 非对称加密:RSA 与椭圆曲线
  3. 哈希函数:SHA-256 及更进一步
  4. 数字签名与证书
← 返回 Cyber Security Academy