假設我有一個數字簽名的PDF文檔(填寫表格)。我需要找到一種方法來驗證使用PHP的PDF文件。使用PHP從PDF中籤名提取
我知道我必須使用函數openssl_verify($data, $signature, $pub_key_id)
。 我需要3個參數(我有公共證書)。
如何從PDF文件中提取簽名數據和簽名本身?
假設我有一個數字簽名的PDF文檔(填寫表格)。我需要找到一種方法來驗證使用PHP的PDF文件。使用PHP從PDF中籤名提取
我知道我必須使用函數openssl_verify($data, $signature, $pub_key_id)
。 我需要3個參數(我有公共證書)。
如何從PDF文件中提取簽名數據和簽名本身?
您需要解析PDF - 理論上,您可以編寫自己的解析函數。但是,您可以使用現成的東西節省大量時間。
Apache's PDFBox怎麼樣?你可以像其他shell腳本一樣執行它,或者使用一些PHP/Java bridge。
如果您決定採取手動方式,請參閱PDF specification以獲得解析器的實現方式 - 您應該能夠忽略任何複雜的部分,並通過查找startxref消除簽名。
也有專有的解決方案,如VersyPDF.PHP,但這些可能會對您的工作有點矯枉過正(但您可能會因爲使用評估版本而不關心水印輸出而偏離正面)。
要提取數據和簽名,可以使用PDF中的/ ByteRange字段中的數字。它有4個數字/ ByteRange [a b c d]。簽名是從第b個字節到第(個)字節,其餘是數據。 在PHP中,您可以使用stream_get_contents()函數通過流獲取內容。