【PHP8.x】openssl_pkcs7_encrypt関数の使い方
openssl_pkcs7_encrypt関数は、データをPKCS7形式で暗号化し、必要に応じてデジタル署名を付与する関数です。この関数は、データの機密性(内容を秘密にすること)と完全性(改ざんされていないこと)を同時に確保するためのセキュアなデータ交換プロトコルであるPKCS7の形式に従って処理を行います。
具体的には、入力されたデータを、指定された受信者の公開鍵証明書を用いて暗号化します。これにより、暗号化されたデータは、対応する秘密鍵を持つ正規の受信者のみが復号し、内容を安全に閲覧できるようになります。不正なアクセスからデータを保護するために重要な機能です。
さらに、オプションとして送信者の秘密鍵と証明書を指定することで、暗号化されたデータにデジタル署名を付与することも可能です。このデジタル署名は、データが確かに指定された送信者によって作成されたものであり、転送中に一切改ざんされていないことを保証します。
この関数は、主にセキュアな電子メール通信(S/MIMEなど)や、信頼性の高いデータのやり取りが必要なシステムで利用されます。関数を使用する際には、暗号化したいデータ、受信者の公開鍵証明書、出力ファイルパスなどを引数として指定します。処理が成功した場合はtrue
を、失敗した場合はfalse
を返します。PHPのOpenSSL拡張が有効になっている環境で利用可能です。
基本的な使い方
構文(syntax)
<?php
$result = openssl_pkcs7_encrypt(
'path/to/input.txt', // 入力ファイルのパス (string)
'path/to/output.p7m', // 出力ファイルのパス (string)
'file:///path/to/recipient_certificate.pem', // 受信者の証明書 (mixed: ファイルパス、文字列、リソース)
['file:///path/to/sender_private_key.pem', 'your_private_key_password'], // 送信者の秘密鍵とパスフレーズ (mixed: 配列、ファイルパス、文字列、リソース)
[], // オプション: ヘッダ (array)
0, // オプション: フラグ (int)
OPENSSL_CIPHER_AES256_CBC // オプション: 暗号化アルゴリズム (int)
);
?>
引数(parameters)
string $input_filename, string $output_filename, OpenSSLCertificate|array|string $certificate, array|string $headers, int $flags = 0, int $cipher_algo = OPENSSL_CIPHER_AES128_CBC
- string $input_filename: 暗号化する元となるファイル名を指定します。
- string $output_filename: 暗号化されたデータを保存するファイル名を指定します。
- OpenSSLCertificate|array|string $certificate: 暗号化に使用する公開鍵証明書を指定します。OpenSSLCertificateオブジェクト、証明書のファイルパス、または証明書の内容を表す文字列で指定できます。
- array|string $headers: PKCS#7メッセージのヘッダー情報を指定します。配列または文字列で指定できます。
- int $flags = 0: 暗号化の動作を制御するフラグを指定します。デフォルトは0です。
- int $cipher_algo = OPENSSL_CIPHER_AES128_CBC: 暗号化に使用するアルゴリズムを指定します。デフォルトはAES128_CBCです。
戻り値(return)
bool
openssl_pkcs7_encrypt 関数は、PKCS#7 形式でデータを暗号化することに成功したかどうかを示す真偽値 (bool) を返します。成功した場合は true、失敗した場合は false を返します。