PHP 8.4.2 Released!

sodium_crypto_aead_chacha20poly1305_ietf_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_ietf_encryptChiffre un message

Description

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

Chiffre puis authentifie avec ChaCha20-Poly1305 (variante IETF).

Le variant IETF utilise des nonces de 96 bits et des compteurs internes de 32 bits, au lieu de 64 bits pour les deux.

Liste de paramètres

message

Le message en texte clair à chiffrer.

additional_data

Additionnel, données authentifiées. Cela est utilisé dans la vérification de l'étiquette d'authentification ajoutée au texte chiffré, mais il n'est pas chiffré ou stocké dans le texte chiffré.

nonce

Un nombre qui doit être utilisé une seule fois, par message. 12 octets de long.

key

La clé de chiffrement (256 bits).

Valeurs de retour

Renvoie la clé de chiffrement et l'étiquette en cas de succès, ou false si une erreur survient.

add a note

User Contributed Notes 1 note

up
3
craig at craigfrancis dot co dot uk
6 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