查詢

openssl_pkcs7_sign()函式—用法及示例

「 建立一個PKCS#7數字簽名 」


函式名:openssl_pkcs7_sign()

適用版本:PHP 4 >= 4.0.6, PHP 5, PHP 7

用法:openssl_pkcs7_sign()函式用於建立一個PKCS#7數字簽名。

語法:bool openssl_pkcs7_sign(string $input_filename, string $output_filename, mixed $certificate, mixed $private_key, array $headers [, int $flags = PKCS7_DETACHED [, string $untrusted_certificates_filename]] )

引數:

  • $input_filename:輸入檔案的路徑,需要被簽名的檔案。
  • $output_filename:輸出檔案的路徑,簽名後的檔案。
  • $certificate:簽名者的證書,可以是檔案路徑或者一個包含證書的字串。
  • $private_key:簽名者的私鑰,可以是檔案路徑或者一個包含私鑰的字串。
  • $headers:簽名的頭部資訊,一個關聯陣列。
  • $flags:可選引數,指定簽名的標誌。預設為PKCS7_DETACHED,表示生成一個獨立的簽名。
  • $untrusted_certificates_filename:可選引數,包含不可信任證書的檔案路徑。

返回值:成功時返回true,失敗時返回false。

示例:

$input_file = 'data.txt';
$output_file = 'signed_data.txt';
$certificate = 'certificate.pem';
$private_key = 'private_key.pem';
$headers = array(
    'Content-Type' => 'text/plain',
    'Content-Disposition' => 'attachment; filename="data.txt"'
);

if (openssl_pkcs7_sign($input_file, $output_file, $certificate, $private_key, $headers)) {
    echo '檔案簽名成功!';
} else {
    echo '檔案簽名失敗!';
}

以上示例中,我們使用openssl_pkcs7_sign()函式對輸入檔案data.txt進行簽名,並將簽名後的檔案儲存為signed_data.txt。簽名者的證書和私鑰分別為certificate.pem和private_key.pem。我們還指定了一些簽名的頭部資訊,包括Content-Type和Content-Disposition。如果簽名成功,輸出"檔案簽名成功!";否則輸出"檔案簽名失敗!"。

補充糾錯
上一個函式: openssl_pkcs7_verify()函式
下一個函式: openssl_pkcs7_read()函式
熱門PHP函式
分享連結