PHP 8.4.6 Released!

sodium_crypto_aead_chacha20poly1305_ietf_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_ietf_encryptCifra un mensaje

Descripción

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

Cifra y autentifica con ChaCha20-Poly1305 (variante IETF).

La variante IETF utiliza nonces de 96 bits y contadores internos de 32 bits, en lugar de 64 bits para ambos.

Parámetros

message

El mensaje en texto claro a cifrar.

additional_data

Datos adicionales 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. 12 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
3
craig at craigfrancis dot co dot uk
7 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