array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'fr', ), 'this' => array ( 0 => 'function.openssl-open.php', 1 => 'openssl_open', ), 'up' => array ( 0 => 'ref.openssl.php', 1 => 'Fonctions OpenSSL', ), 'prev' => array ( 0 => 'function.openssl-get-publickey.php', 1 => 'openssl_get_publickey', ), 'next' => array ( 0 => 'function.openssl-pbkdf2.php', 1 => 'openssl_pbkdf2', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'fr', 'path' => 'reference/openssl/functions/openssl-open.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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
openssl_open() ouvre (déchiffre) les données
data
en utilisant la clé privée
private_key
et la clé d'enveloppe
encrypted_key
et remplit output
avec les données déchiffrées. La clé d'enveloppe est générée
lorsque les données sont scellées, et ne peut être utilisée
qu'avec la clé privée spécifique. Reportez-vous à
openssl_seal() pour plus d'informations.
data
output
Si l'appel a réussi, les données ouvertes sont retournées dans ce paramètre.
encrypted_key
private_key
cipher_algo
La méthode de chiffrement.
La valeur par défaut ('RC4'
) est considéré non-sécurisé.
Il est vivement recommandé de spécifier explicitement une méthode de
chiffrement sûr.
iv
Vecteur d'initialisation.
Version | Description |
---|---|
8.0.0 |
private_key accepte désormais une instance de
OpenSSLAsymmetricKey ou OpenSSLCertificate ;
auparavant, une ressource 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 et $env_key contiennent les données scellées
// et la clé d'enveloppe, fournies par l'expéditeur
// lecture de la clé privée dans un fichier
$fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
// déchiffrage des données : elles sont placées dans $open
if (openssl_open($sealed, $open, $env_key, $pkeyid)) {
echo "Voici les données déchiffrées : ", $open;
} else {
echo "Impossible de déchiffrer les données";
}
// libération des ressources
openssl_free_key($pkeyid);
?>