牛牛在线工具

openssl_cms_read()

收录 8868 个 PHP 函数,含用途说明与用法示例。

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() 函数加载数字信封文件。 解析成功后,可以通过访问返回数组中的相应字段来获取原始的加密数据、签名信息、证书链和证书吊销列表。 证书链和证书吊销列表存储在传递给函数的引用参数中,因此需要创建相应的空数组来接收解析结果。