toolfree

杂凑值产生器

计算文字或文件的 MD5、SHA-1、SHA-256、SHA-384 与 SHA-512 杂凑值,并与公布的校验码比对。文件不会被上传。

在你的浏览器中运行

MD5
-
SHA-1
-
SHA-256
-
SHA-384
-
SHA-512
-

MD5 与 SHA-1 在安全用途上已被攻破,只适合用于文件校验。

验证下载的文件

这是大多数人需要杂凑值的原因。专案会公布释出档的 SHA-256,你计算手上这份文件的杂凑值再比对, 两者相同就代表你拿到的与公布的完全一致,一个字节都不差。

请直接选择上面的文件,不要把内容贴成文字——文件会在你的浏览器中读取与计算,再大的安装档也不会 离开你的电脑。把公布的校验码贴进比对栏,它会告诉你是哪一种演算法相符。

在命令列上:

shasum -a 256 file.iso     # macOS、Linux
certutil -hashfile file.iso SHA256   # Windows

该用哪一种演算法

演算法输出长度现况
MD5128 比特,32 个十六进位字元已被攻破,能轻易制造碰撞
SHA-1160 比特,40 个十六进位字元已被攻破,2017 年公开了实际碰撞
SHA-256256 比特,64 个十六进位字元目前的默认选择
SHA-384384 比特,96 个十六进位字元SHA-512 的截断版,部分 TLS 套件使用
SHA-512512 比特,128 个十六进位字元在 64 比特硬件上常比 SHA-256 更快

这里的「被攻破」指的是可以建构出碰撞:攻击者能做出两个杂凑值相同、内容不同的文件。这不代表 杂凑值可以被反推回原文。MD5 用来侦测意外损毁——下载中断、硬盘坏轨——仍然堪用,这也是有些镜像站 至今仍附上 MD5 的原因。

杂凑不能拿来存密码

直接用 SHA-256 对密码取杂凑,计算速度快得惊人,而这正是最不该有的特性:一般显示卡每秒可以试上 数十亿组。密码储存需要刻意设计得缓慢、加盐、占内存的函式——argon2idscryptbcrypt——并且每个使用者用不同的盐。任何通用的杂凑工具,包括这一个,都不该出现在那条流程里。

为什么同样的输入永远得到同样的结果

杂凑是输入的纯函式,没有随机成分,也没有金钥,所以同样的字节在任何机器上、任何时候都会得到 同样的值。这种确定性让比对有意义,但也表示杂凑值本身无法证明文件是「谁」做的。要证明来源需要 数位签章,也就是把杂凑值和私钥结合起来。

要注意结尾的换行会改变结果。echo hello | shasum 计算的是六个字节,不是五个,这通常就是命令列 算出来的值和贴进网页的文字对不起来的原因。

你的数据只留在这里

杂凑值由浏览器的 WebCrypto 计算,MD5 则由一个需要时才载入的小模组提供。你输入的文字与选择的文件 都不会上传。