查詢

openssl_cms_read()函式—用法及示例

「 從一個 PKCS7/CMS 編碼的數字信封中解析出原始的加密資料和簽名資訊 」


函式名稱:openssl_cms_read()

函式描述:openssl_cms_read() 函式用於從一個 PKCS7/CMS 編碼的數字信封中解析出原始的加密資料和簽名資訊。

適用版本:PHP 5 >= 5.1.2, PHP 7

語法:openssl_cms_read(string $input, array &$certificates, array &$crls, int $flags = 0)

引數:

  • $input:要解析的 PKCS7/CMS 編碼的數字信封。
  • &$certificates:一個陣列,用於儲存從數字信封中提取出的證書鏈。
  • &$crls:一個陣列,用於儲存從數字信封中提取出的證書吊銷列表。
  • $flags:可選引數,用於指定解析標誌。預設為 0。

返回值:如果成功解析數字信封,則返回原始的加密資料和簽名資訊的陣列。如果解析失敗,則返回 FALSE。

示例:

<?php
// 載入 PKCS7/CMS 編碼的數字信封檔案
$input = file_get_contents('encrypted.p7');

// 建立空陣列來儲存證書鏈和證書吊銷列表
$certificates = [];
$crls = [];

// 解析數字信封並提取原始的加密資料和簽名資訊
$data = openssl_cms_read($input, $certificates, $crls);

if ($data !== false) {
    // 輸出解析成功的原始加密資料
    echo $data['data'];

    // 輸出解析成功的簽名資訊
    echo $data['signatures'][0]['signature'];

    // 輸出解析成功的證書鏈
    foreach ($certificates as $certificate) {
        echo openssl_x509_export($certificate);
    }

    // 輸出解析成功的證書吊銷列表
    foreach ($crls as $crl) {
        echo openssl_crl_export($crl);
    }
} else {
    echo "解析數字信封失敗";
}
?>

注意事項:

  • 在使用 openssl_cms_read() 函式之前,需要確保 OpenSSL 擴充套件已經正確安裝和啟用。
  • 數字信封通常以二進位制格式儲存,因此可以使用 file_get_contents() 函式載入數字信封檔案。
  • 解析成功後,可以透過訪問返回陣列中的相應欄位來獲取原始的加密資料、簽名資訊、證書鏈和證書吊銷列表。
  • 證書鏈和證書吊銷列表儲存在傳遞給函式的引用引數中,因此需要建立相應的空陣列來接收解析結果。
補充糾錯
上一個函式: openssl_cms_verify()函式
下一個函式: openssl_cms_encrypt()函式
熱門PHP函式
分享連結