(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_secretbox_open — Déchiffrement authentifié avec une clé partagée
$ciphertext
, string $nonce
, #[\SensitiveParameter] string $key
): string|falseDéchiffrement d'un message chiffré avec une clé symétrique (partagée).
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).
La chaîne déchiffrée en cas de succès ou false
si une erreur survient.
nonce
a une longueur d'octets différente de
SODIUM_CRYPTO_SECRETBOX_NONCEBYTES
(24 octets), une SodiumException sera lancée.
key
a une longueur d'octets différente de
SODIUM_CRYPTO_SECRETBOX_KEYBYTES
(32 octets), une SodiumException sera lancée.
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