sodium_crypto_aead_chacha20poly1305_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_encryptШифрует, а затем проверяет подлинность алгоритмом ChaCha20-Poly1305

Описание

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

Функция шифрует, а затем проверяет подлинность алгоритмом ChaCha20-Poly1305.

Список параметров

message

Текстовое сообщение, которое требуется зашифровать.

additional_data

Дополнительные проверенные данные. Функция использует значение при проверке тега подлинности, который добавили к зашифрованному тексту, но не шифрует и не сохраняет в зашифрованном тексте.

nonce

Номер, который необходимо использовать только один раз для каждого сообщения. Длина 8 байтов.

key

Ключ шифрования (256 битов).

Возвращаемые значения

В случае успешного выполнения функция возвращает зашифрованный текст и тег или false, если возникла ошибка.

Добавить

Примечания пользователей 1 note

up
1
alain at fuz dot org
1 year 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