检查已签名的 PDF,而不必把它发到任何地方
PDF 上的数字签名能很好地回答一个很窄的问题:它所覆盖的字节自签名以来是否被改动过?PDF 签名检查器在你的浏览器中回答这个问题,以及另外三个。
完整性
签名字典中的 /ByteRange 指明签名覆盖文件的哪些部分——除 /Contents 十六进制数据块本身之外的全部。工具把这些范围拼接起来,用 PKCS#7 SignedData 中指明的算法通过 Web Crypto API 做哈希,再与其中封存的 messageDigest 属性比对。这是真正的密码学校验,而不是去读一个由文件制作方写入的状态标志。
覆盖范围——另一个问题
文件可以通过完整性校验,却仍在签名之后被改动过。PDF 支持增量更新:追加在签名范围之后的字节对签名而言是不可见的。因此工具还会报告 /ByteRange 是否到达文件末尾、之后又出现了多少字节,以及这个签名实际覆盖的是文件的哪一个版本。把这两件事混为一谈,是误读已签名 PDF 最常见的方式。
证书
主体、颁发者、序列号、有效期窗口、公钥算法与长度、证书签名算法、SHA-256 指纹,以及证书是否自签名、当前是否已过期、在签名当时是否有效——对多年前作出的签名来说,后者才是关键日期。数据块中内嵌的整条链都会列出,任何一张证书都可导出为 .cer(DER)或 .pem。
它无法告诉你什么
信任。浏览器标签页里没有信任库,因此这里的任何结论都不代表颁发者是被公认的证书颁发机构。不做吊销检查——既无 CRL 也无 OCSP——所以签名次日就被吊销的证书看起来依旧完好。内嵌的 RFC 3161 时间戳会报告但不会验证。这些限制会显示在结果旁边,而不只是写在这里。
认证签名
当签名带有 DocMDP 变换时,会解码出权限级别:不允许改动、允许填写表单,或允许填写表单加注释。后续编辑是否合理地破坏了认证,正取决于此。
隐私
已签名的文档通常是合同。文件在你的浏览器中被解析和哈希;不会上传任何内容。
Tiny Online Tools







