PHP 8.1.0 RC 4 available for testing

sodium_crypto_secretbox

(PHP 7 >= 7.2.0, PHP 8)

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

Описание

sodium_crypto_secretbox(string $message, string $nonce, string $key): string

Шифрование сообщения симметричным (общим) ключом.

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

message

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

nonce

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

key

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

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

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

Ошибки

Примеры

Пример #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"

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

  • sodium_crypto_secretbox_open() - Расшифровка с использованием общего ключа с проверкой подлинности
  • sodium_crypto_secretbox_keygen() - Создаёт случайный ключ для sodium_crypto_secretbox
  • random_bytes() - Генерирует криптографически безопасные псевдослучайные байты

add a note add a note

User Contributed Notes 1 note

up
1
celso fontes
1 year ago
An example to how encrypt or decrypt using sodium:

<?php

$key
= random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);

$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$ciphertext = sodium_crypto_secretbox("Hello World !", $nonce, $key);

$plaintext = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
if (
$plaintext === false) {
    throw new
Exception("Bad ciphertext");
}

echo
$plaintext;
To Top