~/tutorials/hash

哈希值是什么?MD5 和 SHA-256 有什么区别

2026-09-25 · 约 3 分钟读完

下载完一个文件想确认它没被改过,两段文字想做个指纹对比,或者看到一串 32 位 / 64 位的十六进制字符完全看不懂——这些都是日常会碰到的场景。下面 30 秒讲清哈希到底是什么、MD5 和 SHA-256 怎么选、写哈希最常踩的 3 个坑,配免费在线生成器,文本或文件本地算,不上传、不注册。

哈希到底是什么:一段 30 秒讲清

哈希(hash)就是一个把任意长度的数据压成一串固定长度十六进制指纹的函数:给它多长的文件、多长的文本,它都只输出定长的结果——MD5 出 32 位(16 字节)、SHA-1 出 40 位(20 字节)、SHA-256 出 64 位(32 字节)。它有两个关键性质:单向不可逆(拿指纹反推不出原文)和雪崩效应(输入改一个字,整串指纹面目全非,没有任何一位保持不变的概率)。所以它适合当「指纹」,不适合当「锁」。用一段话记住:哈希 = 定长指纹 + 改一字全变。

MD5 和 SHA-256 怎么选

校验下载 / 防篡改:用 SHA-256(最稳)

官方发布安装包、镜像、数据集时公布的校验值,绝大多数已经是 SHA-256。64 位输出加上无已知可行碰撞,是目前日常校验的事实标准。

SHA-1:有碰撞风险,别用于安全

SHA-1 出 40 位,早已算出过人为碰撞。还能用(比如给老系统算个指纹),但任何涉及签名、校验、防篡改的场景都别指望它。

MD5:只做非安全的去重 / 短指纹

32 位短、算得快,适合本地去重、缓存 key 这类无攻击者的场景。做校验或安全用途一律换 SHA-256。

工具:yvfng.com 的哈希生成器,MD5 / SHA-1 / SHA-256 一次出全,文本或文件(≤10MB)都行,全程浏览器本地处理,不上传、不注册。

写哈希最常踩的 3 个坑

常见问题

文件哈希能证明没被篡改吗

能证明到哈希算法能做到的程度:把本地文件算出的 SHA-256 和官方公布的值逐位比对,相同就代表文件内容和当初发布时一致。但前提是官方值本身可信,且用的算法没被攻破——所以校验用 SHA-256,别用 MD5。

为什么 MD5 不算安全了

MD5 的 128 位输出太短,已经被研究出可行的碰撞攻击——能构造两个不同文件算出同一个 MD5。攻击者可用它给恶意文件「借」正常文件的指纹,所以签名、校验、密码存储都别再依赖 MD5。

同一句中文别人算的哈希和我一样吗

一样。哈希只取决于输入字节,不取决于机器:同一串中文在任何设备上按 UTF-8 编码后算出的 SHA-256 都相同,可以直接互相核对。前提是输入完全一致——多一个空格、换一种编码,结果就全变了。

SHA-256 的 64 位怎么来的

SHA-256 输出 256 位(32 字节)的二进制指纹,写成十六进制就是每个字节 2 位、共 64 个字符。MD5 同理:128 位 = 16 字节 = 32 个十六进制字符。

相关工具

哈希生成器

MD5 / SHA-1 / SHA-256 一次出全,文本或文件本地算,不上传。打开 ↗

Base64 编解码

要把内容编码再传走?Base64 可逆编码一步到位。打开 ↗

正则表达式测试

从日志里批量提取哈希值?正则高亮 + 捕获组。打开 ↗

回工具矩阵

更多在线工具与教程,都在首页一屏看全。回首页 ↗

一句话总结:哈希 = 定长指纹 + 改一字全变;校验 / 防篡改用 SHA-256,去重 / 短指纹用 MD5,别拿 MD5 做安全,也别指望哈希能还原原文。