php 实现电子签章
PHP 实现电子签章的方法
使用 TCPDF 或 FPDF 生成 PDF 并添加签名图像
安装 TCPDF 或 FPDF 库,通过代码将签名图像嵌入到 PDF 文档中。TCPDF 提供更丰富的 PDF 操作功能。
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF();
$pdf->AddPage();
$pdf->Image('signature.png', 150, 260, 40, 20);
$pdf->Output('document.pdf', 'F');
使用数字证书进行签名
通过 OpenSSL 扩展实现数字签名,确保文档的完整性和身份验证。需要生成或获取数字证书。
$data = "Document content to be signed";
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
$valid = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256);
集成第三方电子签名服务
调用如 DocuSign、Adobe Sign 或 HelloSign 等服务的 API,实现更完整的电子签名流程。这些服务提供身份验证、审计跟踪等功能。
$client = new HelloSign\Client($apiKey);
$request = new HelloSign\SignatureRequest();
$request->addFile('document.pdf');
$response = $client->sendSignatureRequest($request);
添加时间戳服务
通过时间戳权威机构(TSA)为签名添加时间戳,确保签名时间的可信度。需要与 TSA 服务器进行交互。
$tsaUrl = 'http://timestamp.authority.url';
$tsQuery = file_get_contents($tsaUrl . '?' . http_build_query(['data' => $hash]));
实现签名验证功能
提供签名验证机制,允许接收方验证文档的完整性和签名的真实性。可以通过公钥或第三方服务进行验证。

$isValid = openssl_verify($documentContent, $signature, $publicKey, $algorithm);
if ($isValid === 1) {
echo "Signature is valid";
}
注意事项
- 电子签章的法律效力取决于当地法律法规,需确保符合相关要求。
- 敏感操作如私钥处理应使用安全存储方案。
- 考虑使用专业的电子签名服务以满足合规性要求。
以上方法可根据具体需求组合使用,简单场景可使用图像签名,高安全需求建议结合数字证书和第三方服务。






