把合同 PDF 发给客户,对方回一句:怎么确认这份文件中途没被人改过?光靠文件名写最终版可不行,真正能回答这个问题的是数字签名。
原理:哈希加私钥,两步走
签名方先对文件算一个哈希值,相当于文件的指纹,文件动一个字节指纹就变。然后用只有自己持有的私钥加密这个哈希,加密结果就是数字签名,附在文件后面一起发出去。
收件人拿公开的公钥解开签名,得到发送方的哈希;再自己对文件重新算一遍哈希。两个值一样,说明文件没被改过,而且对方确实持有那把私钥。签名因此同时保证了三件事:文件完整、来源可认、发出后不能抵赖。
和手写签名的差别
- 手写签名模仿起来难鉴定,数字签名靠数学验证,伪造在计算上不可行
- 纸质文件被换页不易发现,数字签名绑定整个文件内容,改一个字就验不过
- 数字签名依赖证书体系,验证时会看证书由谁签发、有没有过期、有没有被吊销
日常在哪里碰到
最常见的三处:PDF 阅读器里的签名面板,点开能看到签名是否有效、签后文档有没有被修改;软件安装包右键属性里的数字签名标签,能看到发行方和哈希算法;电子合同平台的签署流程,背后也是同一套机制。
验证 PDF 签名时留意两点:证书链是否可信、文档属性里有没有已修改的提示。下载软件也一样,官网提供了校验值的,下完核对一遍再安装,几秒钟的事。
实际判断:涉及合同、报价单、安装包这类要紧文件,有签名就顺手验一下,没签名就对照官方公布的哈希值;两个都没有,文件的完整性就只能靠传输渠道自己保证了。