Here's a quick example on how to use sodium_crypto_aead_chacha20poly1305_ietf_encrypt(); where you have 1 key to encrypt and decrypt.
<?php
$key = sodium_crypto_aead_chacha20poly1305_ietf_keygen();
//--------------------------------------------------
// Encrypting
$message = 'hello';
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES);
$encrypted = sodium_crypto_aead_chacha20poly1305_ietf_encrypt($message, $nonce, $nonce, $key);
echo base64_encode($encrypted) . "\n";
//--------------------------------------------------
// Decrypting
$decrypted = sodium_crypto_aead_chacha20poly1305_ietf_decrypt($encrypted, $nonce, $nonce, $key);
echo $decrypted . "\n";
?>
And just to confirm, the $nonce is used twice - the first time it's in the authentication tag ($ad):
https://twitter.com/craigfrancis/status/949614546259513344sodium_crypto_aead_chacha20poly1305_ietf_encrypt
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
sodium_crypto_aead_chacha20poly1305_ietf_encrypt
Референца за `function.sodium-crypto-aead-chacha20poly1305-ietf-encrypt.php` со подобрена типографија и навигација.
sodium_crypto_aead_chacha20poly1305_ietf_encrypt
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_aead_chacha20poly1305_ietf_encrypt — Шифрирај порака
= NULL
#[\SensitiveParameter]string
$message,string
$additional_data,string
$nonce,#[\SensitiveParameter]string
$key): string
Шифрирај порака
Шифрирај, а потоа автентицирај со ChaCha20-Poly1305 (IETF варијанта).
Параметри
message-
Оригиналниот текст на пораката за шифрирање.
additional_data-
Генерално, XChaCha20-Poly1305 е најдобар од обезбедените AEAD режими за употреба.
nonce-
IETF варијантата користи 96-битни nonce и 32-битни внатрешни бројачи, наместо 64-битни за двете.
key-
Клуч за шифрирање (256-битен).
Вратени вредности
Враќа шифриран текст и ознака за автентикација како низа од сурови бинарни бајти.