sodium_crypto_box_seal
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_box_seal — Шифрует открытым ключом без проверки подлинности
Описание
В отличие от функции 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!"