【PHP8.x】openssl_pkcs7_decrypt関数の使い方

作成日: 更新日:

openssl_pkcs7_decrypt関数は、PKCS7形式で暗号化されたメッセージを復号する操作を実行する関数です。この関数は、PHPのOpenSSL拡張を通じて、PKCS7形式でカプセル化された暗号化メッセージを元の平文データへと復元するために使用されます。PKCS7形式は、デジタル署名や暗号化されたデータの安全な交換に広く用いられる国際的な標準規格の一つで、特に電子メールのS/MIMEなどでよく利用されます。

この関数を利用することで、受信者は、自身の秘密鍵と対応する公開鍵証明書(通常は認証局(CA)によって発行されたもの)を使用して、暗号化されたメッセージの機密性を解除し、安全に内容を確認できます。具体的には、暗号化されたデータが格納されたファイルパス、復号されたデータを書き出すファイルパス、そして受信者の証明書ファイルパスおよび秘密鍵ファイルパスを引数として指定します。このプロセスにより、データの盗聴を防ぎ、送信者と受信者の間での安全な情報伝達を実現します。主にS/MIMEなどのセキュアな電子メール通信や、その他PKI(公開鍵基盤)を利用したセキュアなデータ交換の場面で活用されます。処理が成功した場合は true を、失敗した場合は false を返します。この関数を使用するには、PHPにOpenSSL拡張がインストールされ、有効になっている必要があります。

基本的な使い方

構文(syntax)

<?php
$inFilename = 'encrypted_data.pem';
$outFilename = 'decrypted_data.txt';
$certificate = 'path/to/certificate.pem';
$privateKey = 'path/to/private_key.pem';

openssl_pkcs7_decrypt($inFilename, $outFilename, $certificate, $privateKey);

引数(parameters)

string $input_filename, string $output_filename, mixed $certificate, mixed $private_key = null, int $flags = 0

  • string $input_filename: 復号化するPKCS#7署名データを含むファイルパス
  • string $output_filename: 復号化されたデータを保存するファイルパス
  • mixed $certificate: 署名検証に使用する証明書。PEM形式の文字列、またはOpenSSL X.509リソース
  • mixed $private_key = null: 復号化に使用する秘密鍵。PEM形式の文字列、またはOpenSSL X.509証明書リソース。指定しない場合は、証明書に含まれる公開鍵で復号化を試みます(ただし、PKCS#7の暗号化・復号化には通常秘密鍵が必要です)。
  • int $flags = 0: 復号化の動作を制御するフラグ。例えば、OPENSSL_PKCS7_DETACHEDなどがあります。

戻り値(return)

bool

openssl_pkcs7_decrypt 関数は、PKCS#7 形式で暗号化されたデータを復号化する処理が成功したかどうかを示す真偽値(bool)を返します。成功した場合は true を、失敗した場合は false を返します。

【PHP8.x】openssl_pkcs7_decrypt関数の使い方 | いっしー@Webエンジニア