PHP 8.4.1 Released!

sodium_crypto_secretbox_open

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretbox_openDéchiffrement authentifié avec une clé partagée

Description

sodium_crypto_secretbox_open(string $ciphertext, string $nonce, #[\SensitiveParameter] string $key): string|false

Déchiffrement d'un message chiffré avec une clé symétrique (partagée).

Liste de paramètres

ciphertext

Doit être au format fourni par sodium_crypto_secretbox() (concaténation du texte chiffré et du tag).

nonce

Un nombre qui doit être utilisé une seule fois, par message. 24 octets de long. Ceci est une limite suffisamment grande pour être générée aléatoirement (i.e. random_bytes()).

key

La clé de chiffrement (256 bits).

Valeurs de retour

La chaîne déchiffrée en cas de succès ou false si une erreur survient.

Erreurs / Exceptions

Exemples

Exemple #1 Exemple de sodium_crypto_secretbox_open()

<?php
// La $key doit être gardée confidentielle
$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
// Ne pas réutiliser $nonce avec la même clé
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$ciphertext = sodium_crypto_secretbox('message to be encrypted', $nonce, $key);

// Le même nonce et la même clé sont nécessaires pour déchiffrer le $ciphertext
$plaintext = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
if (
$plaintext !== false) {
echo
$plaintext . PHP_EOL;
}
?>

L'exemple ci-dessus va afficher :

message to be encrypted

Voir aussi

add a note

User Contributed Notes 1 note

up
5
khalyomede at gmail dot com
5 years ago
This method will return a string, or false if the data failed to be decrypted.

$key = 'secret';
$data = 'binarydata';
$nonce = random_bytes(SODIUM_CRYPT_SECRETBOX_NONCEBYTES);

$decrypted = sodium_crypto_secretbox_open($data, $nonce, $key);

if ($decrypted === false) {
throw new Exception('failed to decrypt data');
}
To Top