(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_pkcs7_encrypt — S/MIME メッセージを暗号化する
$input_filename
,$output_filename
,$certificate
,$headers
,$flags
= 0,$cipher_algo
= OPENSSL_CIPHER_AES_128_CBC
openssl_pkcs7_encrypt() は、
input_filename
という名前のファイルの内容を
RC2 40 ビット暗号により暗号化します。この内容は、
certificate
で指定した意図する受信者によってのみ読むことが可能です。
成功した場合に true
を、失敗した場合に false
を返します。
バージョン | 説明 |
---|---|
8.1.0 |
デフォルトの暗号化アルゴリズム
(cipher_algo )
が、
AES-128-CBC (OPENSSL_CIPHER_AES_128_CBC )
になりました。
これより前のバージョンでは、
PKCS7/CMS (OPENSSL_CIPHER_RC2_40 )
が使われていました。
|
8.0.0 |
certificate は、
OpenSSLCertificate クラスのインスタンスを受け入れるようになりました。
これより前のバージョンでは、
OpenSSL X.509 CSR 型のリソースを受け入れていました。
|
例1 openssl_pkcs7_encrypt() の例
<?php
// 暗号化するメッセージを nighthawk という名前の外部の秘密の
// エージェントに送信します。送信先の証明書をファイル nighthawk.pem に
// 有しています。
$data = <<<EOD
Nighthawk,
Top secret, for your eyes only!
The enemy is closing in! Meet me at the cafe at 8.30am
to collect your forged passport!
HQ
EOD;
// キーを読み込む
$key = file_get_contents("nighthawk.pem");
// ファイルにメッセージを保存
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// メッセージを暗号化
if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,
array("To" => "nighthawk@example.com", // 連想配列の構文
"From: HQ <hq@example.com>", // 添字配列の構文
"Subject" => "Eyes only"))) {
// メッセージを暗号化し、送信します!
exec(ini_get("sendmail_path") . " < enc.txt");
}
?>