(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_secretbox — Шифрование с общим ключом с проверкой подлинности
$message
, string $nonce
, string $key
): stringШифрование сообщения симметричным (общим) ключом.
message
Текстовое сообщение, которое нужно зашифровать.
nonce
Номер, который необходимо использовать только один раз для каждого сообщения. Длина 24 байта. Это достаточно большая граница для случайной генерации (например, random_bytes()).
key
Ключ шифрования (256 бит).
Возвращает зашифрованную строку.
nonce
отличается от
SODIUM_CRYPTO_SECRETBOX_NONCEBYTES
(24 байта).
key
отличается от
SODIUM_CRYPTO_SECRETBOX_KEYBYTES
(32 байта).
Пример #1 Пример использования sodium_crypto_secretbox()
<?php
// $key должен храниться в секрете.
$key = sodium_crypto_secretbox_keygen();
// Не используйте $nonce повторно с тем же ключом
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$plaintext = "message to be encrypted";
$ciphertext = sodium_crypto_secretbox($plaintext, $nonce, $key);
var_dump(bin2hex($ciphertext));
// Для расшифровки $ciphertext требуются те же имя и ключ.
var_dump(sodium_crypto_secretbox_open($ciphertext, $nonce, $key));
?>
Результатом выполнения данного примера будет что-то подобное:
string(78) "3a1fa3e9f7b72ef8be51d40abf8e296c6899c185d07b18b4c93e7f26aa776d24c50852cd6b1076" string(23) "message to be encrypted"