查询

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函数
分享链接