Hash 生成器指南:MD5/SHA 用途边界与文件校验
下载系统镜像后要和官网校验码比对、发布安装包需要附带摘要、或联调「签名字符串」与文档不一致时,你需要的是 哈希(散列),不是编码。本指南讲清不可逆与碰撞、MD5/SHA 还能不能用、在 WebUtils 上如何对文本/文件出码,并明确:密码存储不要依赖「裸 MD5/SHA」。
核心一句话
哈希是固定长度的指纹:改一丁点输入,摘要就应大变;它不能解密回原文。
用指纹做完整性校验、去重、内容寻址很合适;把哈希当成加密或唯一密码方案会出事故。主工具:Hash 生成器。
哈希是什么、不是什么
哈希算法把任意长度输入映射为固定长度摘要:
| 算法 | 摘要长度(常见十六进制字符数) | 现状(工程直觉) |
|---|---|---|
| MD5 | 128 bit(32 位 hex) | 快;碰撞已实用,勿用于安全签名/密码 |
| SHA-1 | 160 bit(40 位 hex) | 碰撞攻击已示范;淘汰安全用途 |
| SHA-256 | 256 bit(64 位 hex) | 当前常见默认:文件校验、许多签名体系 |
| SHA-512 | 512 bit(128 位 hex) | 更高输出长度;视协议与性能选择 |
不是加密: 没有「密钥解密」过程。能「破解」的是弱口令的字典/暴力与部分算法的碰撞构造,而不是数学上的逆运算公式。
不是 Base64: Base64 可逆、变长(约 +33%);哈希不可逆、定长。运输二进制用 Base64;比对是否同一内容用哈希。
不是 MAC/签名本身: 单纯 MD5(原文) 任何人都能算。要防篡改且防伪造,需要 HMAC、数字签名或带密钥的方案;本工具给出的是 无密钥摘要,便于校验与调试。
雪崩与 equalf 文件
「只改一个逗号,SHA-256 完全不同」是预期行为。若两个文件哈希相同,在所用算法下可认为内容相同(MD5/SHA-1 在对抗场景要担心碰撞;日常镜像校验仍有人用 MD5,但 发布软件更推荐 SHA-256)。
算法怎么选
| 你的目标 | 建议 | 避免 |
|---|---|---|
| 校验下载是否完整/未被改(非对抗极强) | SHA-256 与官网一致 | 仅口头「文件大小一样」 |
| 老接口文档写死 MD5 签名串 | 按文档用 MD5 仅兼容 | 新设计继续扩散 MD5 |
| 内容去重、缓存 key | SHA-256 足够 | 把哈希当保密 transfrom |
| 用户密码存储 | 专用密码哈希(Argon2/bcrypt/scrypt 等 + salt) | 裸 MD5/SHA1/SHA256(password) |
| 证明「我持有密钥且消息未被改」 | HMAC/签名库 | 公开算法无密钥的裸哈希 |
页面 SEO 文案有时把哈希称作「文本加密」——那是检索用语残留;工程上请坚持:摘要 ≠ 加密。
在 WebUtils 上怎么做
工具页:Hash 生成器。依赖浏览器内计算(页面引入 CryptoJS);处理本地完成。
文本模式
- 打开 /tools/dev/hash-generator。
- 左侧确认选中 文本模式(默认)。
- 在文本框输入或粘贴内容;
oninput会触发 calculate,右侧同时给出 MD5 / SHA-1 / SHA-256 / SHA-512。 - 编码 下拉可选 UTF-8 / ASCII(按你要对齐的环境;中文与现代 API 几乎总是 UTF-8)。
- 格式 可选小写 / 大写,以匹配文档里的大小写(有的校验区分大小写字符串比较)。
- 点各算法旁的 复制 带走;清空输入 重置。
注意:首尾空格、换行符、Windows 的 \r\n 都会改变哈希。与后端比对时先确认「是否 trim、是否含换行」。
文件模式
- 切换 文件模式。
- 点击拖放区或拖入文件;显示文件名与大小。
- 工具读入文件后同样计算四类摘要(大文件在浏览器内存与耗时上有现实限制,极特大镜像更适合
sha256sum等本地 CLI)。 - 与官网校验码逐字符比对;只差大小写就改 格式 下拉。
能力边界
- 有: 四算法并行、文本/文件、大小写、UTF-8/ASCII 选项、复制。
- 无: 密码加盐慢哈希、HMAC 密钥框、流式超大文件优化(视浏览器而定)。
- 不宣称: 「用本页存密码就安全」。
常见错误与对照
| 现象 | 常见原因 | 处理 |
|---|---|---|
| 与官网差一位都对不上 | 下完不完整;或比错算法 | 重新下载;确认是 MD5 还是 SHA-256 |
| 文本哈希与后端不同 | 字符集、换行、是否 JSON 紧凑、隐藏空格 | 统一 UTF-8;用十六进制编辑器或长度先比 |
| 只有大小写不同 | 比较时大小写敏感 | 用工具 格式 切换后复制 |
| MD5 相同但文件「看起来」不同 | 极少见碰撞或看错文件 | 安全场景改 SHA-256;确认路径 |
| 以为能「解密」哈希 | 概念错误 | 只能暴力/字典猜输入,且仅对弱输入有效 |
| 密码库泄露仍被撞库 | 裸哈希无盐、算法太快 | 迁移到慢哈希 + 唯一盐;本工具不负责存储方案 |
| 文件模式选了却仍像在算旧文本 | 未切换模式或未选中文件 | 确认 文件模式 与文件名展示 |
| ASCII 选项下中文异常 | 非 ASCII 被错误处理 | 改回 UTF-8 |
联调签名串时的顺序
许多支付/开放平台要求:参数排序 → 拼接 → 可能加 key → MD5/SHA → 变大写。本工具只做最后「对某段文本出摘要」。拼接规则错了,摘要永远对不齐——先固定「进入哈希的那一行字符串」,再贴进文本框。
真实工作场景
场景 A:校验 ISO / 安装包
官网写 SHA256: abcd...。下载后用 文件模式 拖入安装包,复制 SHA-256 对比。不一致则停止安装,优先怀疑下载损坏或镜像源被替换。把算法名与摘要写进运维台账。
场景 B:Release 附校验和
发布 zip 前在 文件模式 算出 SHA-256,写在 GitHub Release 说明。用户侧同样用本工具或 CLI 复核。MD5 可作辅助,但不要作为唯一安全声明。
场景 C:开放平台签名对不上
文档给了示例字符串与期望 MD5。把示例原文(注意文档是否用了不可见空格)贴进 文本模式,看 MD5 是否与文档一致。一致说明工具与算法理解无误,问题在参数排序或 key 拼接;不一致先查原文。
场景 D:两份「应该一样」的导出文件
业务说 CSV 相同但用户坚持不同。分别拖进文件模式比 SHA-256:相同则内容一致(争的是打开方式/Excel 显示);不同再做 Diff。比打开 Excel 肉眼扫更快。
场景 E:误区排查——「我们用 SHA-256 存密码」
审计发现 sha256(password) 无盐。说明:桌面级 GPU 可高速穷举;加盐也可被逐用户攻。应立项迁移;本工具仅用于证明「相同明文相同摘要」的风险演示(用测试口令)。新口令可用 密码生成器 提高熵,但仍须服务端正确哈希。
场景 F:与 Base64 流水线协作
有的接口先哈希再 Base64 传输二进制摘要。本工具输出 hex;若对端要 raw 字节的 Base64,需在程序里转,或明确文档。不要假设「hex 再 Base64」与「raw Base64」相同。
密码与安全提醒
- 不要 用本页的 MD5/SHA 作为密码存储方案。
- 密码应:随机盐 + 慢哈希(Argon2id/bcrypt/scrypt 等)+ 参数随硬件升级。
- 传输仍走 HTTPS;哈希不替代信道安全。
- 粘贴真实用户密码到任何网页工具都不推荐;演示用假数据。
- 文件校验通过 ≠ 软件无毒,只说明与所给摘要一致;摘要来源本身要可信(官网 HTTPS、签名发布)。
- 公共电脑用完清空文本框。
实践清单
- 对外发布优先给 SHA-256,并写明算法名。
- 比对前统一小写或大写,避免假失败。
- 文本签名先冻结「原文」,再哈希。
- MD5 仅兼容遗留,新安全设计绕开。
- 密码路径单独评审,不与文件校验混为一谈。
- 大文件校验失败时先查下载完整性再查工具。
常见问题
哈希能解密吗?
不能按加密意义解密。若输入空间很小(如 6 位数字密码),攻击者可暴力枚举使摘要匹配,那是猜输入,不是逆运算。
为什么 MD5 还在大量系统里?
历史与性能。文件完整性「防损坏」场景仍可见;防恶意碰撞与密码存储已不适用。新系统不要因为「到处都有」就继续选它做安全关键。
同一文件在不同电脑哈希不同?
通常不是算法平台差异(标准摘要应一致),而是文件其实不同:换行、下载截断、多下了另一语言包。用文件大小与两次计算交叉验证。
文本模式和文件模式对「同一内容」一致吗?
若文件字节与文本框按所选编码得到的字节完全一致,则一致。编辑器自动改换行或加 BOM 会导致不同。以文件字节为准做发行校验。
需要 HMAC 怎么办?
本工具不提供密钥输入。用语言自带 crypto 或专门 HMAC 工具;先保证消息原文与密钥管理正确。
在线计算安全吗?
该页在本地算。极敏感密钥材料仍建议离线 CLI;也不要把真实密码贴进文本框做「试验」。
继续浏览
用短文本看四算法长度差异,再拖一个小文件与文本模式对照「换行是否混入」,即可避免最常见的对不上。