哈希生成器

全球通用工具

哈希是计算机里最低调的技术之一:任意长度、任意内容的文本,都会被折叠成一段长度固定、看起来随机的十六进制字符串;同样的文本永远得到同样的结果,而只要改动一个字符,整段结果就会面目全非。正因如此,哈希成了文件校验和、缓存键、完整性校验和内容标识的常用手段。被问得最多的三个算法家族是 MD5、SHA-1 与 SHA-256,所以这一页一次给出三种结果,而不是先让你做选择。

输入的内容只留在当前标签页,每次按键都会重新计算摘要。

留空则使用「hashes.txt」。

边输入边更新。所有计算都在你的浏览器里完成,数据不会离开本机。

一段文本,三种摘要

43 个字符

在当前标签页里用 SHA-256, SHA-1, MD5 计算 —— 共 3 种算法,每次输入都重新计算。

字符数
43
算法数量
3
摘要长度
128 - 256 位

SHA-256(256 位)—— 校验和与签名应当选它

d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

目前没有已知办法构造出两段哈希相同却不同的输入,这正是它成为一切需要信任的场景的默认选择的原因。

SHA-1(160 位)—— 遗留算法,用于旧校验和与 Git 对象名

2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

在安全性上已经失效:碰撞可以被故意构造,所以它只能当校验和,不能当签名。Git 仍用它给对象命名,这一页也仍然为这个用途计算它。

MD5(128 位)—— 遗留算法,用于 ETag 与文件去重

9e107d9d372bb6826bd81d3542a419d6

自 2004 年起在安全性上已经失效。它作为非对抗场景的校验和仍然存在:S3 的 ETag 和大量数据管道都建立在它之上,摘要不一致依然意味着文件不同。

这些数字没有说明的事

  • 哈希是单向的:从摘要无法还原出文本,这正是它的意义。「验证」是指重新哈希并比较十六进制值,而不是把任何东西解码回去。
  • 新用途选 SHA-256。SHA-1 是遗留算法,却仍无处不在(Git 对象名);MD5 也是遗留算法,如今已很容易构造碰撞,留在这里只为那些期望恰好 32 个十六进制字符的旧系统。
  • 相同的文本永远产生相同的摘要,所以每种哈希都能当校验和使用 —— 但如果是密码,请改用带盐值的慢速密码哈希(PBKDF2、scrypt、bcrypt),而不是这里的任何一种。
文本与摘要都在当前浏览器标签页里计算:没有上传、没有发送,也没有存储。

三者并不等价,页面会直接说明差别,而不是让你自己猜。新项目一律选 SHA-256。SHA-1 更老,但仍在各处使用:Git 就用它给对象命名。MD5 更老,如今已经很容易构造碰撞,可仍有大量遗留系统只认它那 32 个十六进制字符。这里算出的哈希不会离开当前标签页:输入框保存明文,三种摘要显示在旁边,打字时实时重算。

关于这个工具

这是一次单向变换,而不是某种编码:拿到摘要无法还原原文,再聪明的页面也做不到逆向。这正是哈希的意义所在,也是为什么校验已保存的密文时要先对候选值做哈希、再比较结果,而不是去解密任何东西。这里的三个算法都在本项目的代码里手工实现,不依赖可能发生行为漂移的第三方库,因此同一段文本在任何机器上、以及页面里都会得到相同的十六进制结果。

如果你要保护的是密码,这类快速哈希并不是最终答案:它们被设计得很快,而这恰恰是攻击者想要的。真正用于存储密码的是刻意放慢、并加入盐值的方案,例如 PBKDF2、scrypt 或 bcrypt。这一页保留 MD5、SHA-1 和 SHA-256,是因为文件校验、缓存和遗留系统确实需要它们,而不是因为它们适合用来保存机密。

它是怎么工作的

什么是摘要,为什么同样的文本得到同样的字符串

哈希函数把任意输入折叠成固定长度的摘要:MD5 是 32 个十六进制字符,对应 128 位;SHA-1 是 40 个字符,对应 160 位;SHA-256 是 64 个字符,对应 256 位。这个函数是确定性的,相同的字节永远得到相同的摘要,这才让哈希可以当作校验和使用;它同时是单向的,所以可以在不保留原文的前提下用它来比对内容。

它还刻意具备很强的雪崩效应:改动一个字符,甚至一个字节,摘要都会整体改变,而不是只在小范围内偏移。因此摘要完全一致,基本可以认定两份文件逐字相同;反过来,哈希也不适合用来保存结构化数据,因为从摘要没有任何回去的路。

MD5、SHA-1 与 SHA-256:该选哪个,为什么

SHA-256 属于 SHA-2 家族,是当前默认选择,也是三者中对新用途最安全的一个,适用于文件校验和、去重与完整性检查。SHA-1 是遗留算法,却仍被大量使用,因为 Git 用 SHA-1 给对象命名;它不该再用于签名、证书这类安全边界,但用来标识内容依然成立。MD5 最老,如今已能实际构造碰撞,也就是让两段不同的消息产生同一个摘要,所以它留在这里只为那些要求恰好 32 个十六进制字符的遗留系统,除此之外没有别的理由。

一次展示三种结果,意义就在于选择本身:同一段文本在这里算出的 SHA-256,可以直接与软件发布页公布的校验和比对,比对一致就是验证通过,而哈希并不因为保密才有价值。摘要长度也直接决定碰撞难度:n 位摘要的生日攻击复杂度约为 2 的 n/2 次方,128 位的 MD5 与 256 位的 SHA-256 之间的差距并不只是字符数量。也正因如此,MD5 与 SHA-1 的碰撞都已被公开演示,而 SHA-256 尚未出现可实际利用的碰撞。

还要把哈希和加密区分开:加密是可逆的,需要密钥;哈希没有密钥,也没有解密过程,把摘要当成密文去“解密”只会白费力气。

校验一次下载:一个字符一个字符地对

用公布的校验和核对文件只有三步:对下载到的文件做哈希、读出对方公布的摘要、把两串逐字符比对。这一页哈希的是你粘贴进来的文本,不是磁盘上的文件,所以诚实的做法是用 `sha256sum`(Windows 上是 `Get-FileHash`)算出文件摘要,再把它粘贴到这里看这种摘要长什么样。

比对是精确的,空白字符也算数。从网页上复制摘要时常常会顺带拖进一个换行或一个不换行空格,所以第一个或最后一个字符对不上时,先重新复制一次,再考虑文件是不是真的有问题。

摘要证明的是“字节离开时是什么样,到达时还是什么样”,它对“谁发的”一无所知。这正是签名要补上的那一环,也是为什么把校验和放在与下载同一台服务器上,只能防损坏,防不住能把两者一起改掉的人。

示例

示例使用页面自带的默认输入,只改设置;下面的结果与你在页面上看到的完全一致。

经典的测试句子

要哈希的文本: The quick brown fox jumps over the lazy dog

一段文本,三种摘要

43 个字符

在当前标签页里用 SHA-256, SHA-1, MD5 计算 —— 共 3 种算法,每次输入都重新计算。

字符数: 43 · 算法数量: 3 · 摘要长度: 128 - 256 位

一句广为人知的测试文本,配套摘要已经公开,可以把这一页的结果与别的哈希工具逐字节对照。

只差一个词的字符串

要哈希的文本: password

一段文本,三种摘要

8 个字符

在当前标签页里用 SHA-256, SHA-1, MD5 计算 —— 共 3 种算法,每次输入都重新计算。

字符数: 8 · 算法数量: 3 · 摘要长度: 128 - 256 位

换成输入 “password1”,三种摘要的每一个字符都会改变——这就是雪崩效应,打字时即可看到。

常见问题

哈希能反解吗?

不能。哈希是单向的,任何计算都无法从摘要还原出原文。攻击者对付弱口令时真正做的是猜测:把一批可能的输入逐一哈希再比对。短密码之所以容易被找出,不是因为摘要被反解,而是因为候选列表太短。正确的防御不是换更强的哈希,而是使用带盐值的慢哈希,所以密码应当交给 PBKDF2、scrypt 或 bcrypt,而不是这里的任何一个算法。

我的文本会被发送到别处吗?

不会。所有计算都在当前标签页内完成,每次按键都会重算,页面背后没有任何请求。下载文件是本地生成的 blob,也不会留下任何存储。因此你粘贴进来的密码或配置密钥不会离开这台机器。

为什么三种摘要长度不同?

因为它们的输出长度本来就不同:MD5 为 32 个十六进制字符(128 位),SHA-1 为 40 个(160 位),SHA-256 为 64 个(256 位)。更长的摘要意味着更难找到碰撞,这就是它们在位数之外的实际差别。

我该用哪种哈希,用在哪里?

新用途选 SHA-256。核对下载文件时,以对方公布的校验和所标明的算法为准,有些软件出于习惯仍会发布 SHA-1 或 MD5。存储密码则三种都不要用,应选择 PBKDF2、scrypt 或 bcrypt 这类带盐值的慢哈希。

既然已经不安全,为什么还提供 MD5 和 SHA-1?

因为它们无处不在。Git 用 SHA-1 给对象命名,并且还会持续很多年;遗留集成仍然只接受恰好 32 个字符的 MD5。这里的“不安全”指的是不适合签名、证书这类安全边界,而不是不能用来标识内容,而大多数人要哈希,恰恰是为了后者。

资料来源与统计口径

  • MD5、SHA-1 与 SHA-256 遵循公开规范(RFC 1321 与 FIPS 180-4),摘要长度也按标准定义。
  • SHA-1 与 MD5 只用于校验和与旧系统,页面明确说明两者都不适合安全场景,更不能用来存密码。
  • 哈希在你的浏览器里计算,文本不会离开这个标签页,也不会被保存。

最近复核于 2026-10-07.

本页在您的浏览器本地运行,请保留原文件备份;不涉及财务建议。 阅读完整免责声明。