sodium_crypto_aead_chacha20poly1305_ietf_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_ietf_encryptЗашифровать сообщение

Описание

sodium_crypto_aead_chacha20poly1305_ietf_encrypt(
    string $message,
    string $additional_data,
    string $nonce,
    string $key
): string

Шифрует, а затем проверяет подлинность с помощью ChaCha20-Poly1305 (вариант IETF).

Вариант IETF использует 96-битные одноразовые номера и 32-битные внутренние счётчики вместо 64-битных и для того и для другого.

Список параметров

message

Текстовое сообщение, которое нужно зашифровать.

additional_data

Дополнительные проверенные данные. Это используется при проверке тега подлинности, добавленного к зашифрованному тексту, но он не шифруется и не сохраняется в зашифрованном тексте.

nonce

Номер, который необходимо использовать только один раз для каждого сообщения. Длина 12 байт.

key

Ключ шифрования (256 бит).

Возвращаемые значения

В случае успешного выполнения возвращает зашифрованный текст и тег или false в случае возникновения ошибки.

add a note add a note

User Contributed Notes 1 note

up
5
craig at craigfrancis dot co dot uk
3 years ago
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/949614546259513344
To Top