哈希看起来很简单,直到遇到第一个实际问题:"把文件移到别的文件夹,哈希值会变吗?"、"为什么同一份合同有两个不同的哈希值?"、"能不能从哈希值还原出文件?"。这些恰恰是搜索量最大的问题——而大多数相关文章都没有直接回答。
如果您还不清楚什么是哈希,请先阅读我们的指南:SHA-256 哈希与文件完整性。这里直接进入问题。
1. 移动、复制或重命名文件会改变哈希值吗?
不会。哈希值是根据文件内容——即字节的精确序列——计算的。文件名、所在文件夹、系统显示的修改日期和权限都在文件之外,属于文件系统。把文件拷到 U 盘、改名、上传到网盘再下载回来:只要没有任何字节变化,哈希值就不变。
2. 通过邮件或微信发送会改变哈希值吗?
取决于怎么发:
- **作为邮件附件,或在微信等应用中以"文件"形式发送(原图/原文件):**文件原样到达——哈希值不变;
- **以普通图片或视频形式发送:**应用会重新压缩以节省流量。收到的是另一个文件——哈希值不同。
所以,可能作为证据的图片应当以文件形式发送,而不是普通图片。
3. 为什么两个文字相同的 Word 文件哈希值不同?
因为 .docx 保存的远不止文字:作者、创建时间和最后保存时间、总编辑时长、内部修订标识,甚至文件的打包方式。同样的文字在不同时间保存两次,这些数据就会变——字节变了,哈希值也随之改变。
哈希证明的是两个文件完全相同,而不是两段文字相同。要知道两个版本之间文字有没有变,应该用内容比较工具——例如把两个版本导出为 PDF,再用PDF 比较逐字高亮显示改动。
4. 打开文件会改变哈希值吗?
只是打开阅读,不会。保存则会——即使看不出任何改动。许多程序保存时会重写元数据(Word 会更新日期和计数;PDF 阅读器在您点击"保存"时可能写入信息)。实用原则:作为证据的文件只打开、查看、关闭——绝不覆盖保存。
5. 能从哈希值反推出文件内容吗?
**不能。**哈希是单向函数:从文件可以算出哈希值,但从哈希值无法还原文件。因此公开一份机密文件的哈希值是安全的——它不会泄露任何内容。
6. 哈希能保证文件的机密性吗?
不能——这是常见误解。哈希保证的是完整性(文件没有被改动),而不是机密性(别人无法读取)。拿到文件的人照样能打开。要保密,需要另一种机制:用密码加密。区别详见我们的文档加密、哈希、签名与时间戳指南。
7. SHA-256 是对称加密还是非对称加密?
都不是。对称和非对称密码学都用密钥来加密和解密。SHA-256 不使用密钥,也不"解密"任何东西——它是摘要(哈希)函数。不过它会用在电子签名这类非对称体系内部:软件先计算文档的哈希值,再用证书的私钥对这个哈希值签名。
8. SHA-256 能被伪造吗——造出哈希值相同的另一个文件?
实际上不能。这需要找到"碰撞"——两个不同文件拥有相同的 SHA-256——而至今无人找到过;所需的计算量远超现有能力。正因如此,SHA-256 是银行、电子取证和区块链的标准。
旧算法则不然:MD5 和 SHA-1 已被证明存在碰撞,不应再用来证明完整性。如果有人给您一个 32 位(MD5)或 40 位(SHA-1)的"哈希值",请要求提供 SHA-256(64 位)。
9. PDF 的哈希值在哪里?在文件里面吗?
不在文件里面——也不可能在:往 PDF 里写入任何东西都会改变它自己的哈希值。哈希值是需要核验的人根据文件计算出来的,所以它出现在文件外部:报告、邮件、证明文件或鉴定意见中。
法院、政务系统或公证处出具的文件底部印着的,通常是验证码或二维码,用于到出具机构的网站上核验文件。作用类似,但那是系统的标识,不一定是文件的 SHA-256。
至于带电子签名的 PDF,签名内部确实保存了一个哈希值——那是被签名内容的哈希,PDF 阅读器用它来验证签名。详见什么是电子签名以及如何验证已签名的 PDF。
10. "修改 PDF 的哈希值"是为了什么?
有人搜索"改 PDF 哈希值是为了什么"。需要明确:哈希值本身没法"修改"——只能修改文件,文件一变,哈希值自然随之改变。在正常工作中,"哈希值变了"往往意味着文件被另存、转换或编辑过;在核验场景中,它正是发现改动的信号。如果有人刻意要求您"把文件改到哈希值不同",通常是为了绕过重复检测,这一点值得警惕。
11. 怎样获取 PDF(或 Excel、Word)的哈希值?
需要文件本身和一个计算哈希的工具。最快的方法是把文件拖进完整性校验工具:SHA-256 立即显示,文件不会被发送到任何地方。如果您收到了一个要比对的哈希值,把它粘贴到校验框中——一致就说明文件完全相同。也可以在 Windows、macOS 和 Linux 的命令行中计算(命令见这篇指南)。
Excel、Word、照片、视频和 ZIP 同样适用:哈希适用于任何类型的文件,不只是 PDF。
12. 用什么技术验证文件在传输过程中是否被修改?
哈希校验(也叫校验和)。发送方计算哈希值并通过另一个渠道告知;接收方计算收到文件的哈希值并比对。一致就说明途中没有丢失或改动。正规网站发布软件下载就是这样做的,取证人员也是这样确认扣押硬盘的副本与原件一致——参见电子证据与保管链。
附加:哈希能用来查找重复文件吗?
能——这是最实用的用途之一。SHA-256 相同的文件就是同一个文件,无论叫什么名字。把文件拖进校验工具,相同的哈希值会暴露重复项,即使它们分别叫 合同_定稿.pdf 和 合同_定稿_v2_OK.pdf。更多内容见如何判断两个文件是否相同。
一表总结
| 问题 | 简短回答 |
|---|---|
| 移动、复制、重命名会改变哈希值吗? | 不会 |
| 以普通图片形式发送会改变吗? | 会(应用会重新压缩) |
| 两个 Word 文字相同 = 哈希相同? | 几乎不会 |
| 打开文件会改变吗? | 不会。保存可能会 |
| 哈希会泄露内容吗? | 不会 |
| 哈希能保护机密性吗? | 不能——只保证完整性 |
| SHA-256 能伪造吗? | 实际上不能(MD5 和 SHA-1 可以) |
| 哈希值在 PDF 里面吗? | 不在(电子签名内部的哈希除外) |