(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_secretstream_xchacha20poly1305_push — Шифрует фрагмент данных для безопасной расшифровки через потоковый API
&$state,$message,$additional_data = "",$tag = SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGEФункция шифрует фрагмент данных, чтобы его можно было безопасно расшифровать в потоковом API.
stateСмотрите описания функций sodium_crypto_secretstream_xchacha20poly1305_init_pull() и sodium_crypto_secretstream_xchacha20poly1305_init_push()
message
additional_data
tagНеобязательно. Указывают для подтверждения поведения дешифрования (т. е. повторного ввода ключей или указания последнего фрагмента в потоке).
SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE:
самый распространённый тег, который не добавляет никакой информации о характере сообщения.
SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL:
указывает, что сообщение отмечает конец потока, и стирает секретный ключ,
использованный для шифрования предыдущей последовательности.
SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH:
указывает, что сообщение отмечает конец набора сообщений, но не конец потока.
Например, огромная строка JSON, отправленная в виде нескольких фрагментов, может использовать этот тег,
чтобы указать приложению, что строка завершена и что её можно декодировать.
Но сам поток не закрывается и могут последовать дополнительные данные.
SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY:
«забывает» ключ, использованный для шифрования этого и предыдущих сообщений и получает новый секретный ключ.
Функция возвращает зашифрованный текст.