sodium_crypto_secretbox
PHP Manual
PHP Manual»Функции Sodium»sodium_crypto_secretbox

sodium_crypto_secretbox

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretbox — Шифрует общим ключом с проверкой подлинности

Описание

function sodium_crypto_secretbox(#[\SensitiveParameter] string $message, string $nonce, #[\SensitiveParameter] string $key): string

Функция шифрует сообщения симметричным (общим) ключом.

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

message

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

nonce

Номер, который необходимо использовать только один раз для каждого сообщения. Длина 24 байта. Это достаточно большая граница, чтобы генерировать её случайно (например, функцией random_bytes()).

key

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

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

Функция возвращает зашифрованную строку.

Ошибки

  • Функция выбрасывает исключение SodiumException, если длина байтов параметра nonce отличается от значения константы SODIUM_CRYPTO_SECRETBOX_NONCEBYTES (24 байта).

  • Функция выбрасывает исключение SodiumException, если длина байтов параметра key отличается от значения константы SODIUM_CRYPTO_SECRETBOX_KEYBYTES (32 байта).

  • Функция выбрасывает исключение SodiumException, если возникла ошибка.

Примеры

Пример #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 требуются те же nonce и ключ
var_dump(sodium_crypto_secretbox_open($ciphertext, $nonce, $key));

?>

Вывод приведённого примера будет похож на:

string(78) "3a1fa3e9f7b72ef8be51d40abf8e296c6899c185d07b18b4c93e7f26aa776d24c50852cd6b1076"
string(23) "message to be encrypted"

Смотрите также

To Top