SHA-256 哈希值是什么?如何证明文件从未被篡改
其他语言版本:РусскийPortuguêsBahasa Indonesiaहिन्दीFrançaisEspañolEnglishবাংলাالعربية
今天您通过电子邮件收到一份合同。六个月后,有人在会议上——或在纠纷中——出示"同一份"文件。如何证明它就是原来那份文档,连一个标点都没有改动? 全世界的司法鉴定专家、法院和银行系统使用的答案,只有一个词:哈希(hash)。
本指南将不用多余的术语,解释什么是 SHA-256 哈希值,为什么它相当于文件的数字指纹,如何计算 PDF 的哈希值(在 Windows、Mac 以及直接在浏览器中),以及在日常处理重要文档时如何运用它。
用大白话解释:什么是哈希值
哈希值是对文件内容进行数学运算得到的结果。算法读取文档的每一个比特——每个字、每个空格、每个像素——然后生成一段固定长度的序列,类似这样:
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
对于 SHA-256(256 位安全哈希算法),这段序列永远是 64 个字符,无论文件是 2 KB 还是 2 GB。
哈希值之所以有用,靠的是四个特性:
- 确定性:同一个文件永远产生同一个哈希值——今天、明天、在世界上任何一台电脑上都一样;
- 雪崩效应:哪怕只改动文档中的一个字符——一个逗号、一个空格——都会产生一个完全不同、面目全非的哈希值;
- 单向性:无法从哈希值反推出文档内容。哈希值不泄露任何内容——因此即使是机密文件的哈希值也可以放心公开;
- 抗碰撞性:在实践中,伪造两个内容不同但 SHA-256 哈希值相同的文件,在计算上是不可行的。
正因如此,哈希值被称为文件的数字指纹:它唯一地标识那份内容,却不暴露内容本身。
哈希值在实际工作中的用途
如果您在律所、会计、人力资源或工程部门工作,哈希值能解决非常具体的问题:
- 证明文档没有被篡改。 签约当天记录了合同的哈希值?之后任何人都可以重新计算所出示副本的哈希值进行比对。哈希值相同 = 文档逐比特完全一致。哈希值不同 = 内容被修改过。
- 比较之前先核对版本。 在花时间比较合同的两个版本之前,哈希值几秒钟就能告诉您两个文件是否真的不同——两个文件名不同的 PDF 可能是同一份文档,反之亦然。
- 附件的完整性链条。 当您将大 PDF 拆分成多个部分以便上传到有大小限制的系统时,原始文件的哈希值记录了这些部分来自哪份完整的文档。
- 验证下载和文件传输。 通过链接、U 盘或微信收到文件?哈希值可以确认文件完整无损地到达。
- 为审阅工作留档。 RoseLab 的比较报告会打印两个被比较文件的 SHA-256 哈希值——收到报告的人可以确认所分析的版本正是那两份文件。
如何计算文件的 SHA-256 哈希值
在浏览器中,无需安装任何软件(最快的方式)
RoseLab 完整性验证器可以直接在浏览器中计算任何文件的 SHA-256 哈希值——PDF、Word、图片、表格:
- 打开验证器(无需注册账号);
- 将一个或多个文件拖到页面上;
- 每个文件的哈希值立即显示,并附有复制按钮。
重要提示:计算完全在您自己的浏览器内完成,使用的是 Web Crypto 技术。文件不会被发送到任何服务器——当文档涉密时,这一点至关重要。
在 Windows 上(命令行)
打开命令提示符,使用系统自带的 certutil 工具:
certutil -hashfile "C:\路径\合同.pdf" SHA256
或者在 PowerShell 中:
Get-FileHash "C:\路径\合同.pdf" -Algorithm SHA256
在 Mac 和 Linux 上
在终端中:
shasum -a 256 合同.pdf
对同一个文件,三种方法得到的结果完全相同——这正是标准的妙处:任何人、在任何系统上,都能独立算出同一个哈希值。
如何核实 PDF 是否被改动过(分步操作)
常见场景:您在某处(报告、旧邮件、会议纪要)记录了一份文档的哈希值,现在有人出示一个文件,声称就是那份文档。
- 打开完整性验证器;
- 拖入对方出示的文件;
- 将记录在案的哈希值粘贴到核对框中;
- 结果立即显示:绿色——文件与原件逐比特完全一致;红色——内容不匹配:文件被修改过,或根本不是同一份文档。
没有中间地带,也没有"几乎一样":由于雪崩效应,任何改动——无论可见与否——都会彻底改变哈希值。如果核对失败,而您想知道具体改了什么,下一步就是把两个版本放进 PDF 比较工具,打开自动差异高亮。
哈希值能证明什么——不能证明什么
这是很多人搞混、而弄懂了很值钱的部分:
哈希值证明完整性:文件内容与记录哈希值时的内容完全一致。在这一点上它几乎无可辩驳——数字取证使用的正是同一机制。
哈希值不能证明作者和时间。 它不能说明文档是谁创建的、何时创建的。证明作者身份要靠电子签名(在中国受《电子签名法》规范,可靠的电子签名与手写签名具有同等法律效力);证明时间要靠可信时间戳。三种机制相辅相成——我们在文档加密:哈希、电子签名与时间戳一文中详细解释了它们的区别。
因此,在工作文档中使用哈希值的诚实方式是:尽早把哈希值记录在难以抵赖的地方——发送给对方的邮件正文里、共享的报告中、会议纪要上。记录越早、越公开,完整性证据就越有力。
哈希值与 RoseLab 的比较报告
当您在 RoseLab 比较文档的两个版本并生成报告时,报告会包含:
- 两个文件的标识信息(文件名和页数);
- 每个版本的 SHA-256 哈希值;
- 比较的日期和时间;
- 删除和新增内容的完整清单。
报告上还印着一条提示:不要信任,去验证——任何收到报告的人都可以把原始文件拖进公开验证器,自行重新计算哈希值。这是独立验证:不需要信任 RoseLab,也不需要信任发送报告的人——数学自己会说话。
这个流程特别适合在签约前审阅合同、核对官方文件的修订版本,以及为日后需要他人复核的审阅工作留档——完整方法见文档比较的完整流程。
办公室最佳实践
- 重要文档一到手就记录哈希值——只需几秒钟,却建立了一个完整性基准点;
- 发送最终版本时在邮件中附上哈希值("合同见附件,SHA-256:
abc123...")——对方可以确认收到的文件完好无损; - 将比较报告与被比较的文件一起归档——三者合在一起讲述完整的来龙去脉;
- 在操作文件之前(合并、拆分、压缩或删除页面),先记录原件的哈希值:生成的新文件自然会有新的哈希值,而您需要能证明它的来源;
- 对没有经过验证的"原件副本"保持警惕——核对不到一分钟,疑虑一扫而空。
常见问题
SHA-256 哈希和加密是一回事吗? 哈希是一种密码学函数,但它不"隐藏"文档——而是标识文档。保密性加密(加密/解密)是另一种机制,详见我们的文档加密指南。
两个不同的文件可能有相同的哈希值吗? 数学理论上碰撞存在;但在实践中,从未发现过 SHA-256 碰撞,制造一次碰撞超出了已知的计算能力。它是银行、区块链和司法鉴定采用的标准。
重命名文件会改变哈希值吗?
不会。哈希值基于内容计算,与文件名无关。内容相同的 最终合同.pdf 和 版本2.pdf 哈希值相同。
打印后再扫描,哈希值还一样吗? 不一样——扫描件是一份新文档(新的图像、新的字节),哈希值会完全不同,即使文字看起来一样。哈希验证的是数字文件,不是纸张。
RoseLab 的验证器会保存我的文件吗? 不会。哈希计算在您的浏览器本地完成。任何文件都不会被上传或存储到服务器。
可以验证非 PDF 文件吗? 可以。验证器接受任何格式:Word、Excel、图片、视频、ZIP。哈希是通用的文件概念,不限于 PDF。