4

假设我有一个数字签名的 PDF 文档(已填写表格)。我需要找到一种使用 PHP 验证 PDF 文件的方法。

我知道我必须使用 function openssl_verify($data, $signature, $pub_key_id)。我需要 3 个参数(我有公共证书)。

如何从 PDF 文件中提取签名数据和签名本身?

4

2 回答 2

0

您需要解析 PDF - 理论上,您可以编写自己的解析函数。但是,使用现成的东西可以节省大量时间。

Apache 的 PDFBox怎么样?您可以像任何其他 shell 脚本一样执行它,或者使用一些PHP/Java 桥接器

如果您决定采用手动方式,请参阅PDF 规范以了解实现解析器的方法 - 您应该能够忽略任何复杂的部分并通过查找 startxref 来找出签名。

还有像VersyPDF.PHP这样的专有解决方案,但这些对你的工作来说可能有点矫枉过正(但从好的方面来说,你可能会使用评估版本,因为你不关心水印输出)。

于 2013-02-20T16:48:26.683 回答
0

要提取数据和签名,您可以在 PDF 的 /ByteRange 字段中使用数字。它有 4 个数字作为 /ByteRange[abcd]。签名是从 b(th) 字节到 c(th) 字节,剩下的是数据。在 PHP 中,您可以使用 stream_get_contents() 函数按流获取内容。

于 2014-04-14T17:25:39.720 回答