PHP Conference Fukuoka 2025

sodium_crypto_aead_chacha20poly1305_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_encryptCriptografa e autentica com ChaCha20-Poly1305

Descrição

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

Criptografa e autentica com ChaCha20-Poly1305.

Parâmetros

message

A mensagem de texto simples a ser criptografada.

additional_data

Dados adicionais e autenticados. São usados ​​na verificação da tag de autenticação anexada ao texto cifrado, mas não são criptografados nem armazenados no texto cifrado.

nonce

Um número que deve ser usado apenas uma vez por mensagem. 8 bytes long.

key

Chave de criptografia (256-bit).

Valor Retornado

Retorna o texto cifrado e tag em caso de sucesso, ou false em caso de falha.

adicionar nota

Notas de Usuários 1 note

up
1
alain at fuz dot org
2 years ago
A flip/flop unit test to give you a sample:<?phpuse 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