我们说我有一个经过数字签名的PDF文档(填写表格)。我需要找到一种方法来使用PHP验证该PDF文件。
我知道我必须使用函数openssl_verify($data, $signature, $pub_key_id)
。
我需要3个参数(我有公共证书)。
如何从PDF文件中提取签名数据和签名本身?
答案 0 :(得分:0)
您需要解析PDF - 理论上,您可以编写自己的解析函数。但是,使用现成的东西可以节省大量时间。
Apache's PDFBox怎么样?您可以像执行任何其他shell脚本一样执行它,或使用一些PHP/Java bridge。
如果您决定采用手动方式,请参阅PDF specification了解实现解析器的方法 - 您应该能够忽略任何复杂的部分并通过查找startxref来删除签名。
还有像VersyPDF.PHP这样的专有解决方案,但这些对你的工作来说可能有点过分(但从好的方面来说,你可能会因为不关心水印输出而使用评估版本)
答案 1 :(得分:0)
要提取数据和签名,您可以使用PDF的/ ByteRange字段中的数字。它有4个数字/ ByteRange [a b c d]。签名是从第b个字节到第c个字节,剩下的是数据。 在PHP中,您可以使用stream_get_contents()函数按流获取内容。