PHP 8.4.6 Released!

sodium_crypto_aead_chacha20poly1305_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_encryptCifra y autentica con ChaCha20-Poly1305

Descripción

sodium_crypto_aead_chacha20poly1305_encrypt(
    #[\SensitiveParameter] string $message,
    string $additional_data,
    string $nonce,
    #[\SensitiveParameter] string $key
): string

Cifra y autentica con ChaCha20-Poly1305.

Parámetros

message

El mensaje en texto claro a cifrar.

additional_data

Adicional, datos autentificados. Esto se utiliza en la verificación de la etiqueta de autentificación añadida al texto cifrado, pero no se cifra ni se almacena en el texto cifrado.

nonce

Un número que debe ser utilizado una sola vez, por mensaje. 8 bytes de largo.

key

La clave de cifrado. 256 bits.

Valores devueltos

Devuelve la clave de cifrado y la etiqueta en caso de éxito, o false en caso de error.

add a note

User Contributed Notes 1 note

up
1
alain at fuz dot org
2 years ago
A flip/flop unit test to give you a sample:

<?php

use PHPUnit\Framework\TestCase;

class
SodiumTest extends TestCase
{
public function
testSodium()
{
// or 32 cryptographically secure bytes
// store the key securely with other secrets in your app
$key = sodium_crypto_aead_xchacha20poly1305_ietf_keygen();

// 8-bytes nonce should be stored along with the ciphertext (will be needed for decryption)
// It is not sensitive, you may just prepend it before the ciphertext.
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES);

$flip = 'Hello, world!';
$ciphertext = sodium_crypto_aead_chacha20poly1305_encrypt($flip, $nonce, $nonce, $key);
$flop = sodium_crypto_aead_chacha20poly1305_decrypt($ciphertext, $nonce, $nonce, $key);

$this->assertEquals($flip, $flop);
}
}

?>

Side note: the nonce is used twice in this test, but you can use a username, an identifier or whatever you like in `$additional_data`
To Top