文件哈希校验工具
计算本地文件的 SHA-1、SHA-256、SHA-384 或 SHA-512 摘要,可填写期望值比较文件内容是否一致。
工具资源加载中...
文件哈希校验工具介绍
文件哈希校验工具使用浏览器 Web Crypto 接口,对本地文件的原始字节计算 SHA-256、SHA-1、SHA-384 或 SHA-512 摘要。可以粘贴同一算法的期望十六进制摘要,检查当前文件是否与提供的摘要一致,适合下载文件完整性核对、文件版本比对与本地校验记录。文件仅在当前浏览器内读取,不上传服务器。
按原始文件字节计算
支持任意文件类型,不进行文本解码、换行转换或图片重绘,文件中的每个字节都参与摘要。
四种标准 SHA 摘要
提供 SHA-256、SHA-1、SHA-384、SHA-512,输出完整的十六进制字符串,可选择大写字母。
期望值比较与报告
严格检查期望摘要长度,显示一致、不一致或未比较状态,并可复制摘要或导出校验报告。
文件摘要计算与校验步骤
- 选择本地文件,核对显示的文件名和字节数。允许零字节文件,单个文件不得超过 50 MiB(52428800 字节)。
- 选择摘要算法。若需要核对下载站提供的校验值,必须选择与其完全相同的算法。
- 可选填写“期望摘要”,仅粘贴完整十六进制值,不附加文件名、算法前缀或内部空格。前后空白会移除,字母大小写不影响比较。
- 点击“计算文件摘要”。完成后查看摘要和校验结果,也可复制摘要或将文件名、字节数、算法、期望值及比较状态导出为 TXT。
“加载示例”会构造名称为 abc.txt、字节为 ASCII abc 且不含换行的 3 字节示例,自动使用 SHA-256 并填入其已知标准摘要。修改算法、期望值、大写选项或重新选择文件后,旧结果会清除。计算中可点击“取消计算”;清空会删除选中文件、期望值与结果。
文件哈希算法与结果含义
SHA-1 结果为 40 位十六进制字符,SHA-256 为 64 位,SHA-384 为 96 位,SHA-512 为 128 位。相同算法处理相同文件字节会得到相同摘要;改动文件内容中的一个字节,通常会产生不同结果。文件名和文件修改时间不参与计算,因此仅重命名文件不会改变摘要。
SHA-256 示例 abc 的摘要为 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad。文本文件如果额外含有换行、UTF-8 BOM 或使用不同编码,文件字节就不同,摘要也会改变。若仅需计算输入文本的摘要,可使用 文本 MD5 / SHA 摘要工具。
“一致”仅表示当前文件按所选算法得到的摘要与提供值相同,不代表已验证发布者身份、签名或文件是否安全。SHA-1 已存在碰撞攻击,不适合新的安全完整性设计;这里保留 SHA-1 供兼容已有校验值。新记录通常优先选择 SHA-256 或更强算法。本工具不支持 MD5、数字签名验证及文件内容修复。
浏览器支持与文件大小限制
工具需要支持 FileReader、ArrayBuffer、Uint8Array 和标准 Promise 形式 Web Crypto crypto.subtle.digest 的现代浏览器,且运行环境必须允许 Web Crypto,通常应通过 HTTPS 访问。若浏览器缺少接口或页面不是安全上下文,会显示明确错误,不会上传文件作为替代方案。
该实现一次读取完整文件到内存,再调用原生摘要接口,不是分块或流式计算,因此限制为 50 MiB。读取与计算期间内存使用可能高于文件大小。取消可中止尚在进行的读取;已经交给浏览器的摘要计算无法原生中止,但任务作废后其结果和错误均会被忽略,不覆盖新任务。关闭文件选择窗口的 cancel 事件仅在支持该事件的浏览器中触发。
如果希望把图片文件转换为编码文本,可使用 图片与 Base64 互转工具。Base64 是编码形式,不能代替文件摘要做完整性校验。
文件哈希校验常见问答
为什么提示需要 HTTPS 安全上下文?
Web Crypto 的摘要接口受浏览器运行环境限制。请通过网站 HTTPS 地址打开工具,使用支持标准接口的现代浏览器;无接口时工具会停止计算,不会使用远程服务读取文件。
为什么期望摘要长度不正确?
不同 SHA 算法的摘要长度不同。请核对算法并只粘贴完整十六进制字符,例如 SHA-256 必须是 64 位。带有 SHA256: 前缀、内部空格、破折号、文件名或非十六进制字符的内容会被拒绝。
零字节文件也有摘要吗?
有。空字节序列也有算法定义的摘要,本工具允许选择大小为 0 字节的文件;不要把“文件为空”与“未选择文件”混淆。
结果不一致表示文件损坏了吗?
可能是文件内容不同,也可能是算法、期望值或文件版本选错。先核对来源和算法,再确认文件是否完整下载。工具只显示比较结果,不确定差异位置,也不修复文件。
为什么没有百分比进度?
工具显示读取与计算中的状态。标准 digest 接口不提供计算进度,因此不会将文件读取百分比冒充整个哈希运算的进度。