— 输入上方文本以获取哈希值 —— 输入上方文本以获取哈希值 —— 输入上方文本以获取哈希值 —— 输入上方文本以获取哈希值 —— 输入上方文本以获取哈希值 —— 输入上方文本以获取哈希值 —关于 哈希生成器
哈希函数把任意长度输入映射为固定长度摘要,常用于校验文件完整性、存储密码指纹与生成数据去重标识。本工具基于浏览器 Web Crypto 的 subtle.digest 计算 SHA-1、SHA-256、SHA-384、SHA-512,并兼容 MD5 与 RIPEMD-160 以对接旧系统。例如对字符串 hello 可得到 SHA-256 值 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824。输入文本只在本地处理,不会上传。校验文件完整性时,建议与官方公布的摘要逐字符比对,哪怕一位不同也说明内容已被改动;存储密码请勿直接使用通用哈希,应选用带盐与慢哈希机制的专用方案,否则彩虹表能在很短时间内反推原文。
使用方法
- 打开文本哈希工具
- 在输入框中粘贴要哈希的文本
- 自动计算并显示 MD5、SHA-1、SHA-256、SHA-512 等哈希值
- 支持文件哈希:切换到文件模式上传文件
- 点击哈希值旁的复制按钮获取结果
使用场景
- 校验文件完整性 — 比对下载文件的 SHA-256,与官方公布值一致才能确认未被篡改。
- 密码存储前预处理 — 配合 salt 使用,但密码存储建议使用 bcrypt(本站「Bcrypt 哈希」工具)。
- Git commit 验证 — Git 用 SHA-1 标识 commit,本工具可手动复算验证 commit 内容。
- API 签名计算 — 配合 HMAC(本站「HMAC 生成器」)生成请求签名。
- 去重 / 缓存 key — 用内容哈希做缓存 key,相同内容只存一份。
常见问题
SHA-1 还能用吗?
密码学场景已不安全(2017 年 Google 公布碰撞攻击),但用于校验和、Git commit ID 等非对抗场景仍可。
SHA-256 和 SHA-512 哪个更安全?
都足够安全。SHA-512 输出更长(128 位十六进制 vs 64 位)但计算稍慢,绝大多数场景用 SHA-256 即可。
为什么没有 MD5?
MD5 早已被破解(2004 年王小云团队),不建议任何新代码使用。如确需 MD5,浏览器原生 API 也不再提供。
同一段文本每次计算结果都一样吗?
是的。哈希函数是确定性的——相同输入永远输出相同哈希,这正是它能用于校验的原因。
能从哈希反推原文吗?
不能。哈希是单向函数,无法从输出反推输入。但短弱密码可被字典或彩虹表攻击,这就是为什么密码存储要用 bcrypt+salt。
为什么同样的密码两次算出的哈希不一样?
因为加了盐(salt)。哈希本身是确定性的,但密码校验系统通常在每次注册或改密时生成随机盐拼进原文再计算,使相同密码得到不同摘要,从而抵御彩虹表与相同密码关联分析。盐一般随哈希一起保存(如 bcrypt 的盐前缀),校验时取出盐重新计算比对。若两次结果不同且格式里没有盐的痕迹,多半是输入编码或是否追加了换行符不一致,先统一 UTF-8 再试。
同一段文本在不同工具算出的哈希为什么不一样?
多半是编码或空白差异:UTF-8 与 UTF-16、大小写、末尾换行、首尾空格都会改变参与计算的字节,摘要自然不同。例如 Windows 记事本保存的文件可能带 BOM 或 CRLF,与 Linux 的 LF 结尾字节不一致。排查时把输入按十六进制查看、确认字节级完全一致,再统一为 UTF-8 加 LF 换行,任意工具都会得到相同结果。