sodium_crypto_aead_chacha20poly1305_ietf_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_ietf_encryptCriptografa uma mensagem

Descrição

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

Criptografa e autentica com ChaCha20-Poly1305 (variant IETF).

A variante IETF usa nonces de 96 bits e contadores internos de 32 bits, em vez de 64 bits para ambos.

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. 12 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.

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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