Шифрует открытым ключом без проверки подлинности

# 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);

    // Обфусцированный текст, чтобы сделать пример более увлекательным
    $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