Uvlio

Command Palette

Search for a command to run...

返回文章列表
技术文章

SHA-256 解释:哈希、完整性检查、盐值与误用

SHA-256 接收输入数据并生成固定长度摘要。相同输入总是得到相同摘要,输入的一点变化会让结果看起来完全不同。这让哈希适合完整性检查、重复检测、缓存键和签名场景。但哈希不是加密,快速哈希也不是完整的密码存储方案。
limitcool 维护的 Uvlio 编辑团队2026-05-177 分钟阅读
主题封面开发工具SHA 哈希生成器

SHA-256 解释:哈希、完整性检查、盐值与误用

介绍 SHA-256 哈希、文件完整性检查、密码存储注意事项、碰撞抗性,以及为什么哈希不是加密。

文章主题预览
理解原理
检查边界
使用工具
关联工具
SHA 哈希生成器
阅读重点
1理解原理
2检查边界
3使用工具

原创流程图

SHA-256 解释:哈希、完整性检查、盐值与误用

这张图由 Uvlio 为本文工作流生成,用来说明从输入检查到输出判断的基本路径。
1

理解原理

检查后再进入下一步

2

检查边界

检查后再进入下一步

3

使用工具

检查后再进入下一步

维护与复核
维护者:limitcool。阅读时可重点关注技术原理、处理边界、隐私风险和可验证事实。
哈希是一种单向摘要

密码学哈希函数把任意大小的数据映射成固定长度输出。SHA-256 输出 256 位,通常显示为 64 个十六进制字符。它设计上难以从摘要还原原文,也难以找到两个不同输入拥有相同摘要。

完整性检查比较已知值

软件下载常发布 SHA-256 校验和。下载后对本地文件求哈希并比较,匹配说明文件大概率与发布者计算摘要时相同。这证明一致性,不证明发布者可信;如果文件和校验和来自同一被篡改页面,仍可能被误导。

哈希是确定性的

相同输入总是产生相同 SHA-256 摘要。这有利于查重和校验,也意味着低熵输入可能被猜出。常见词、短码或可预测 ID 的哈希可以通过枚举猜测匹配。哈希让内容不直观,但不会让弱输入变强。

密码存储需要慢哈希和盐

SHA-256 很快,这对完整性检查有利,对密码存储不利。攻击者可以高速尝试猜测。密码系统需要盐值和专门的密码哈希算法,如 bcrypt、scrypt 或 Argon2,并根据平台建议设置成本。

哈希不是加密

加密可以用密钥还原,哈希不是为了还原。如果需要取回原数据,哈希就是错误工具;如果要证明数据未变,哈希可能合适;如果要证明来源,还需要签名或消息认证码。

规范化输入很重要

看似相同的输入可能因为空格、换行、Unicode 规范化、JSON key 顺序、文件元数据和编码不同而哈希不同。文本框可能规范化换行,文件哈希则按原始字节计算。结构化数据要跨系统一致,必须定义规范表示。

实用哈希流程

文件校验时直接对文件字节求哈希,并从可信渠道比较校验和。文本比较要先决定编码和换行。API 签名必须严格遵守服务方规范化规则。密码不要使用裸 SHA-256。可预测敏感值的哈希也要谨慎对待。

常见问题

能解密 SHA-256 哈希吗?

不能。SHA-256 是单向哈希,不是加密;只能比较猜测或已知输入。

为什么看起来一样的字符串哈希不同?

可能空格、换行、Unicode 规范化或编码不同。哈希处理的是字节。

SHA-256 适合存密码吗?

不适合单独使用。应使用带盐和值得配置成本的密码哈希算法。

检查下载文件时应比较什么?

对下载文件的精确字节求哈希,并与可信来源的摘要比较。

为什么 JSON 签名常需要规范化?

JSON 可用不同空白、key 顺序和转义表示相似数据;哈希看字节,不看意图。

哈希能在不暴露文件的情况下识别文件吗?

可以识别精确字节序列,但如果输入可预测,别人仍可猜测或查表。