函式名稱:openssl_cms_encrypt()
適用版本:PHP 5 >= 5.3.0, PHP 7
函式描述:openssl_cms_encrypt() 函式用於使用 CMS (Cryptographic Message Syntax) 格式對資料進行加密。
用法:
openssl_cms_encrypt(
string $data,
string $certificate,
array $headers,
int $flags = 0,
int $cipher = OPENSSL_CIPHER_RC2_40
): string|false
引數:
- $data:需要加密的資料,必須是字串型別。
- $certificate:用於加密的證書,可以是證書檔案的路徑或者是 PEM 格式的字串。
- $headers:關聯陣列,指定加密過程中的一些頭部資訊,例如加密演算法、加密證書等。
- $flags:可選引數,用於指定加密的標誌位,預設為0。
- $cipher:可選引數,用於指定加密演算法,預設為 OPENSSL_CIPHER_RC2_40。
返回值:
- 成功時,返回加密後的資料,型別為字串。
- 失敗時,返回 false。
示例:
// 載入證書
$certificate = file_get_contents('path/to/certificate.pem');
// 設定頭部資訊
$headers = [
'Content-Type' => 'application/octet-stream',
'Encrypted-By' => 'PHP OpenSSL',
'Encryption-Algo' => 'aes-256-cbc',
'Encryption-Certificate' => '/C=US/O=MyOrg/CN=Test Cert',
];
// 待加密的資料
$data = 'This is a secret message.';
// 加密資料
$encryptedData = openssl_cms_encrypt($data, $certificate, $headers);
if ($encryptedData !== false) {
echo '加密成功:' . $encryptedData;
} else {
echo '加密失敗';
}
注意事項:
- 在使用該函式之前,確保已經正確載入了 OpenSSL 擴充套件。
- 加密過程中,需要提供有效的證書用於加密操作。
- 頭部資訊是一個關聯陣列,可以自定義相關的資訊,確保加密和解密過程中的一致性。
- 加密演算法可以根據需要進行調整,預設為 RC2 40 位演算法,可以透過 $cipher 引數進行修改。
- 在加密成功後,可以將加密後的資料進行傳輸或儲存,確保資料的安全性。