(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_open — Ouvre des données scellées
$data
,&$output
,$encrypted_key
,$private_key
,$cipher_algo
,$iv
= null
La openssl_open() ouvre (décrypte) data
en utilisant une clé d'enveloppe
qui est décryptée à partir de encrypted_key
en utilisant
private_key
. La décryption est effectuée à l'aide de
cipher_algo
et iv
. Le VI est requis uniquement si la
méthode de chiffrement l'exige. La fonction remplit output
avec les données
décryptées. La clé d'enveloppe est généralement générée lorsque les données sont scellées à l'aide d'une clé publique
associée à la clé privée. Consultez openssl_seal() pour plus d'informations.
data
Les données scellées.
output
Si l'appel a réussi, les données ouvertes sont retournées dans ce paramètre.
encrypted_key
La clé symétrique chiffrée qui peut être décryptée à l'aide de private_key
private_key
La clé privée utilisée pour déchiffrer encrypted_key
.
cipher_algo
La méthode de chiffrement utilisée pour le déchiffrement de data
.
La valeur par défaut pour les versions de PHP antérieures à 8.0 est ('RC4'
), qui est
considérée comme non sécurisée. Il est fortement recommandé de spécifier explicitement une méthode de chiffrement
sécurisée.
iv
Le vecteur d'initialisation utilisé pour le déchiffrement de data
. Il est requis
si la méthode de chiffrement nécessite un VI. Cela peut être déterminé en appelant
openssl_cipher_iv_length() avec cipher_algo
.
Version | Description |
---|---|
8.0.0 |
private_key accepte désormais une instance de
OpenSSLAsymmetricKey ou OpenSSLCertificate ;
auparavant, une resource de type OpenSSL key ou OpenSSL X.509 CSR
était acceptée.
|
8.0.0 |
cipher_algo n'est désormais plus un paramètre optionnel.
|
Exemple #1 Exemple avec openssl_open()
<?php
// On suppose que $sealed, $env_key et $iv contiennent les données scellées,
// la clé d'enveloppe et IV. Toutes ournies par l'expéditeur.
// Récupérer la clé privée depuis le fichier situé dans private_key.pem
$pkey = openssl_get_privatekey("file://private_key.pem");
// Déchiffrage des données : elles sont placées dans $open
if (openssl_open($sealed, $open, $env_key, $pkey, 'AES256', $iv)) {
echo "Voici les données déchiffrées : ", $open;
} else {
echo "Impossible de déchiffrer les données";
}
?>