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

作成日: 更新日:

openssl_cms_decrypt関数は、Cryptographic Message Syntax (CMS) 形式で暗号化されたデータを復号する関数です。CMSは、デジタル署名や暗号化されたメッセージ(デジタルエンベロープ)など、情報を安全にやり取りするための標準的な暗号メッセージ構文であり、特に機密性の高いデータの送受信で広く利用されています。

この関数は、外部から受け取ったCMS形式の暗号化メッセージを、指定された受信者の証明書とそれに紐づく秘密鍵を用いて、元の平文データに戻す役割を担います。具体的には、暗号化されたデータ本体、復号の対象となる受信者の証明書ファイルまたは文字列、そしてその証明書に対応する秘密鍵のパスまたは内容を引数として受け取ります。また、復号された平文データを保存するための出力ファイルパスも指定できます。

復号処理が成功すると、暗号化されていたデータが安全に元の形式で取り出され、指定された出力先に書き込まれます。もし、証明書や秘密鍵が一致しない場合、データが破損している場合、またはその他のセキュリティ上の問題がある場合には、復号に失敗し、falseが返されます。この関数は、例えばS/MIMEを用いたメールの暗号化解除や、セキュアなデータ交換プロトコルにおいて、受信した機密情報を安全に閲覧するために不可欠な機能を提供します。システム開発において、データの機密性を保ちつつ、信頼できる通信を実現する際に重要な役割を果たします。

基本的な使い方

構文(syntax)

<?php
openssl_cms_decrypt(
    'path/to/input_encrypted_file.cms',
    'path/to/output_decrypted_file.txt',
    'path/to/certificate.pem',
    'path/to/private_key.pem'
);
?>

引数(parameters)

string $inputFilename, string $outputFilename, OpenSSLCertificate|string $certificate, OpenSSLAsymmetricKey|string|array|null $privateKey = null, int $encoding = OPENSSL_CMS_BINARY

  • string $inputFilename: 複合化するCMSメッセージが格納されているファイルパス
  • string $outputFilename: 複合化されたメッセージの出力先ファイルパス
  • OpenSSLCertificate|string $certificate: 複合化に使用する署名証明書
  • OpenSSLAsymmetricKey|string|array|null $privateKey = null: 複合化に使用する秘密鍵(証明書が公開鍵のみの場合に必要)
  • int $encoding = OPENSSL_CMS_BINARY: 複合化に使用するエンコーディング(例: OPENSSL_CMS_BINARY、OPENSSL_CMS_TEXT)

戻り値(return)

bool

openssl_cms_decrypt 関数は、CMSメッセージの復号化に成功したかどうかを示す真偽値(bool)を返します。復号化が成功した場合は true を、失敗した場合は false を返します。

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