匿名の公開鍵暗号による暗号化

# sodium_crypto_box_seal

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_seal — 匿名の公開鍵暗号による暗号化

### 説明

function sodium_crypto_box_seal(#[\SensitiveParameter]string `$message`, string `$public_key`): string

受信側のみが復号できるやり方で、 メッセージを暗号化します。

sodium_crypto_box() と異なり、 sodium_crypto_box_seal() に必要なのは、 受信側の公開鍵だけです。 その結果として、暗号化されたメッセージは静的な公開鍵と結びつきません。 そのため、認証が必要になります。 それゆえに、匿名の公開鍵暗号と呼ばれています。

sodium_crypto_box_seal() 関数は暗号化メッセージの完全性を提供しています。 送信側の完全性の認証だけではありません。

送信側を認証したい場合、 sodium_crypto_sign() 関数が入門として最適です。

### パラメータ

`message`
  暗号化するメッセージ
`public_key`
  メッセージを復号できる鍵に対応する、公開鍵

### 戻り値

暗号化された文字列。 一度限りの公開鍵、 暗号化されたメッセージ、 認証タグ というフォーマットで成ります。

### 例

例1 sodium_crypto_box_seal() の例

    <?php
    $keypair = sodium_crypto_box_keypair();
    $public_key = sodium_crypto_box_publickey($keypair);

    // Obfuscated plaintext to make the example more fun
    $plaintext_b64 = "V3JpdGluZyBzb2Z0d2FyZSBpbiBQSFAgY2FuIGJlIGEgZGVsaWdodCE=";
    $decoded_plaintext = sodium_base642bin($plaintext_b64, SODIUM_BASE64_VARIANT_ORIGINAL);

    $sealed = sodium_crypto_box_seal($decoded_plaintext, $public_key);
    var_dump(base64_encode($sealed));

    $opened = sodium_crypto_box_seal_open($sealed, $keypair);
    var_dump($opened);
    ?>

上の例の出力は、 たとえば以下のようになります。

    string(120) "oRBXXAV4iQBrxlV4A21Bord8Yo/D8ZlrIIGNyaRCcGBfpz0map52I3xq6l+CST+1NSgQkbV+HiYyFjXWiWiaCGupGf+zl4bgWj/A9Adtem7Jt3h3emrMsLw="
    string(41) "Writing software in PHP can be a delight!"

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open