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

作成日: 更新日:

openssl_seal関数は、OpenSSLライブラリを利用して、特定のデータを複数の受信者向けに安全に暗号化する機能を提供する関数です。この関数は、まず指定されたデータを共通鍵暗号方式で暗号化します。次に、その暗号化に用いた共通鍵(セッションキー)を、あらかじめ指定された複数の公開鍵でそれぞれ個別に暗号化します。これにより、暗号化されたデータ本体と、そのデータを復号するための共通鍵が、意図された受信者のみがアクセスできる安全な形式で準備されます。

具体的な利用例としては、機密性の高い情報を複数のメンバーに安全に共有したい場合などに有効です。この関数を使用するには、暗号化したい元のデータ、暗号化後のデータが格納される変数、暗号化された共通鍵の配列が格納される変数、受信者の公開鍵の配列、使用する暗号化アルゴリズム、そして初期化ベクトル(IV)を引数として渡します。処理が成功した場合、この関数は生成された共通鍵の長さを整数で返します。万が一、処理に失敗した場合はfalseが返されますので、戻り値を確認してエラーハンドリングを行うことが重要です。

基本的な使い方

構文(syntax)

<?php
$dataToEncrypt = 'Your original data string.';
$encryptedDataOutput = '';
$encryptedEnvelopeKeys = [];
$recipientPublicKeys = ['-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMII...-----END PUBLIC KEY-----'];

$result = openssl_seal(
    $dataToEncrypt,
    $encryptedDataOutput,
    $encryptedEnvelopeKeys,
    $recipientPublicKeys
);
?>

引数(parameters)

string $data, string &$sealed_data, array &$encrypted_keys, array|string $public_key, string $cipher_algo, string &$iv = null

  • string $data: 暗号化する対象のデータ
  • string &$sealed_data: 暗号化されたデータが格納される変数(参照渡し)
  • array &$encrypted_keys: 各公開鍵で暗号化されたセッションキーが格納される変数(参照渡し)
  • array|string $public_key: データを暗号化するために使用する1つ以上の公開鍵、または鍵のパス
  • string $cipher_algo: 使用する暗号化アルゴリズム(例: 'aes-256-cbc')
  • string &$iv = null: 初期化ベクトル(IV)が格納される変数。指定しない場合はランダムに生成されます(参照渡し)

戻り値(return)

int|false

openssl_seal 関数は、成功した場合は暗号化されたデータのバイト数を整数で返します。失敗した場合は false を返します。

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