使用PHP从PDF中提取签名

4

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

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

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

2个回答

0

你需要解析PDF文件 - 理论上,你可以编写自己的解析函数。然而,使用现成的工具会节省很多时间。

那么 Apache's PDFBox 呢?你可以像执行其他shell脚本一样执行它,或者使用一些 PHP/Java bridge

如果你决定手动实现,可以查看 PDF specification 来实现你的解析器 - 你应该能够忽略任何复杂的部分,并通过查找 startxref 来找到签名。

还有一些专有解决方案,比如 VersyPDF.PHP,但这些可能对你的工作有点过度(但好处是你可以使用评估版本,因为你不关心水印输出)。


0

为了提取数据和签名,您可以使用PDF的/ByteRange字段中的数字。它有4个数字,如/ByteRange[a b c d]。签名是从第b个字节到第c个字节,其余是数据。 在PHP中,您可以使用stream_get_contents()函数通过流获取内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接