祈灵工具箱

🎖️PDF 数字签名验证 - 检查签名是否有效、文件是否被篡改

收到一份签了字的电子合同、证明或发票 PDF,怎么知道签名是真的、签完之后有没有被改过?这个工具在浏览器里逐个校验 PDF 中的数字签名。它找出所有签名域(含名称、所在页、是否可见)和签名字典,先检查 ByteRange:是否从文件开头开始、空出来的部分是否恰好只有签名数据、是否覆盖到文件末尾——如果签名之后又追加了修订版本,会告诉你追加了几次、里面是后续签名、DSS 验证信息、文档时间戳,还是批注等其它改动。然后解析签名里的 PKCS#7 / CMS SignedData,按 ByteRange 重新计算 SHA-1/256/384/512 摘要,与签名属性中的 messageDigest 逐字节比对,再用浏览器自带的 WebCrypto 校验签名值(支持 RSA PKCS#1 v1.5、RSA-PSS、ECDSA P-256/384/521、Ed25519),并核对 signingCertificate 属性。证书部分会列出签名者证书和文件内附带的证书链,逐级校验上级证书对下级的签名,显示每张证书的主题、签发者、有效期、密钥用途和 SHA-256 指纹,并判断签名时证书是否在有效期内。时间戳方面支持 RFC 3161 签名时间戳和文档时间戳(ETSI.RFC3161),校验时间戳对应的数据和时间戳机构的签名;同时显示 DocMDP 认证级别、DSS / LTV 长期验证信息和签名内嵌的吊销信息。需要说明的是,工具没有内置受信任根证书库,也不联网查询吊销状态,所以只能证明“内容没被改、签名数学上成立”,签名人身份是否可信请对照证书链和指纹自行判断。文件不会上传。

免费 · 无需注册 · 浏览器本地处理最后更新:

正在加载工具...

如何使用PDF 数字签名验证

  1. 1上传一个已签名的 PDF,工具会自动找到所有签名和时间戳
  2. 2查看每个签名的结论:摘要比对、签名值校验、ByteRange 覆盖范围以及签名后的修改
  3. 3展开证书链核对签名人、签发机构、有效期和指纹,需要时导出 JSON 报告

常见问题

显示“签名有效”是不是就说明签名人可信?
不完全是。“有效”表示被签名的内容在签名后没有改动,并且签名确实由证书里的公钥算出、证书链内部的签发关系成立。但工具没有内置受信任根证书库,也不联网查询证书是否被吊销,所以无法判断签名人身份是否得到权威机构认可。请核对证书链中的签发机构和指纹,或在配置了信任列表的 Adobe Acrobat 等软件里复核。
提示“签名后追加了修订”是什么意思?
PDF 支持增量保存:签名之后的修改会追加到文件末尾,原来被签名的字节保持不变,所以旧签名在数学上依然成立,但追加的内容不受它保护。如果追加的只是第二个人的签名、DSS 长期验证信息或文档时间戳,这是正常的多人签署或归档流程;如果包含批注或其它改动,就需要留意签名后到底改了什么。
为什么有的签名显示“无法完整校验”?
常见原因有:使用了浏览器 WebCrypto 不支持的算法(如 MD5、SHA-224、国密 SM2/SM3、DSA),签名里没有附带签名者证书,或者签名格式比较特殊。此时工具仍会展示能解析出的 ByteRange、证书和时间戳信息,但不会给出“有效”的结论。
文件会上传到服务器吗?
不会。PDF 的解析、摘要计算和签名校验全部在你的浏览器里完成,合同等敏感文件不会离开你的电脑;工具也不会访问 OCSP、CRL 或时间戳服务器。