查詢

openssl_cms_decrypt()函式—用法及示例

「 解密由 OpenSSL 加密的 CMS (Cryptographic Message Syntax) 格式的資料 」


函式名稱:openssl_cms_decrypt()

適用版本:PHP 5 >= 5.3.0, PHP 7, PHP 8

函式描述:openssl_cms_decrypt() 函式用於解密由 OpenSSL 加密的 CMS (Cryptographic Message Syntax) 格式的資料。

語法:openssl_cms_decrypt(string $input, string $output, mixed $certificate, mixed $private_key [, array $headers [, int $flags = 0]])

引數:

  • $input:要解密的輸入資料,可以是檔案路徑或者是一個字串。
  • $output:解密後的輸出資料,可以是檔案路徑或者是一個變數名。
  • $certificate:用於解密的證書,可以是證書檔案路徑、證書字串或者是一個 OpenSSL X.509 證書資源。
  • $private_key:用於解密的私鑰,可以是私鑰檔案路徑、私鑰字串或者是一個 OpenSSL 金鑰資源。
  • $headers:可選引數,用於指定要解密的 CMS 格式的頭部資訊。
  • $flags:可選引數,用於指定解密的標誌。預設為0。

返回值:成功時返回解密後的資料,失敗時返回 FALSE。

示例:

// 解密一個加密的 CMS 格式資料並將結果儲存到檔案中
$inputFile = 'encrypted.cms';
$outputFile = 'decrypted.txt';
$certificateFile = 'certificate.pem';
$privateKeyFile = 'private_key.pem';

$inputData = file_get_contents($inputFile);

$certificate = openssl_x509_read(file_get_contents($certificateFile));
$privateKey = openssl_pkey_get_private(file_get_contents($privateKeyFile));

$decryptedData = openssl_cms_decrypt($inputData, $outputFile, $certificate, $privateKey);

if ($decryptedData !== false) {
    echo '解密成功!解密後的資料已儲存到 ' . $outputFile;
} else {
    echo '解密失敗!';
}
// 解密一個加密的 CMS 格式資料並將結果儲存到變數中
$inputData = 'encrypted.cms';
$certificateString = '-----BEGIN CERTIFICATE-----
MIIC...
-----END CERTIFICATE-----';
$privateKeyString = '-----BEGIN PRIVATE KEY-----
MIIE...
-----END PRIVATE KEY-----';

$certificate = openssl_x509_read($certificateString);
$privateKey = openssl_pkey_get_private($privateKeyString);

$decryptedData = openssl_cms_decrypt($inputData, $outputData, $certificate, $privateKey);

if ($decryptedData !== false) {
    echo '解密成功!解密後的資料:' . $outputData;
} else {
    echo '解密失敗!';
}

注意事項:

  • 在使用 openssl_cms_decrypt() 函式之前,需要確保 OpenSSL 擴充套件已經安裝並啟用。
  • 傳遞給函式的證書和私鑰引數可以是檔案路徑、字串或者是 OpenSSL 的證書或金鑰資源。
  • 解密後的資料可以儲存到檔案中或者儲存到變數中,具體取決於輸出引數的型別。
  • 錯誤處理:如果解密失敗,函式會返回 FALSE,可以使用 openssl_error_string() 函式獲取錯誤資訊。
補充糾錯
上一個函式: openssl_cms_encrypt()函式
熱門PHP函式
分享連結