0Pricing
Cryptology Academy · 课时

普通 SHA-256 为何不适合密码

理解彩虹表、暴力破解速度和盐值

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

欢迎

安全地存储密码是安全领域中最容易被误解的主题之一。本课将帮助您理解为什么 SHA-256 这类快速哈希算法完全不适合密码。

数据库泄露时会发生什么

数据库泄露一直在发生。2024 年,RockYou2024 泄露了 100 亿个密码。如果您以可恢复的形式存储用户密码,攻击者就能将它们恢复出来。

简单的 SHA-256 存储

错误模式: hashed = sha256(password) store(username, hashed) 问题:(1) sha256 速度极快;(2) 相同密码会产生相同哈希值(没有盐值);(3) 常见密码存在彩虹表。

彩虹表攻击

彩虹表是针对数百万个常见密码预先计算的 hash→password 映射。SHA-256('password') 始终产生相同的哈希值。查表即可瞬间解密大多数密码。

盐值的作用

盐值 = 在哈希前添加到密码前面的随机字节。 hash = sha256(salt + password) 每个用户都会获得唯一的盐值。彩虹表因此失去作用,攻击者必须分别对每个用户进行暴力破解。

但仅有盐值还不够

现代 GPU 每秒可计算 10 BILLION 个 SHA-256 哈希值。即使盐值各不相同,攻击者拿到泄露的哈希值后,仍可在几分钟内暴力破解 8 位密码。

速度问题

SHA-256 的设计目标就是高速运行——用于文件完整性、TLS 等场景。速度对于密码哈希来说是敌人。我们需要有意放慢速度、抵抗暴力破解的算法。

密钥拉伸

密钥拉伸会将哈希函数迭代数千次:for i in range(100000): h = sha256(h)。这会同时拖慢攻击者和防御者,但硬件优势仍然偏向攻击者。

内存密集型函数

现代密码哈希算法需要大量 RAM,而不仅仅是 CPU 运算周期。与 CPU 相比,GPU 的每核心 RAM 有限。Argon2 的内存密集特性可以抵消 GPU/ASIC 的优势。

常见错误

不要这样做: - sha256(password) - sha256(salt + password)(没有迭代) - md5(password)(或任何 MD5) - 加密密码(可以被解密) - sha256(sha256(password))(仍然很快)

应该使用什么

请使用:bcrypt(部署最广泛)、Argon2id(OWASP 推荐,内存密集型)、PBKDF2-SHA256(符合 FIPS,能够接受)。这三种算法都经过有意减速,并且设计上都会使用盐值。

快速检查

即使使用盐值,SHA-256 为什么仍不适合密码哈希?

回顾

SHA-256 不适合密码。接下来我们将学习 bcrypt——一种有意放慢哈希过程并抵抗硬件攻击的算法。

常见问题解答

「普通 SHA-256 为何不适合密码」课时是免费的吗?

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

「普通 SHA-256 为何不适合密码」这节课中我会学到什么?

理解彩虹表、暴力破解速度和盐值 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

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

「普通 SHA-256 为何不适合密码」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 普通 SHA-256 为何不适合密码
  2. bcrypt:算法与成本因子
  3. Argon2:内存困难型密码哈希
  4. PBKDF2 与算法选择
← 返回 Cryptology Academy