Example code, assume mycert.pem is a certificate containing both private and public key.
$cert = file_get_contents("mycert.pem");
$public = openssl_get_publickey($cert);
$private = openssl_get_privatekey($cert);
$data = "I'm a lumberjack and I'm okay.";
echo "Data before: {$data}\n";
openssl_seal($data, $cipher, $e, array($public));
echo "Ciphertext: {$cipher}\n";
openssl_open($cipher, $open, $e[0], $private);
echo "Decrypted: {$open}\n";
openssl_open
(PHP 4 >= 4.0.4, PHP 5)
openssl_open — Ouvre des données scellées
Description
bool openssl_open
( string $sealed_data
, string &$open_data
, string $env_key
, mixed $priv_key_id
)
openssl_open() ouvre (déchiffre) les données sealed_data en utilisant la clé privée priv_key_id et la clé d'enveloppe env_key et remplit open_data 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.
Liste de paramètres
- sealed_data
-
- open_data
-
Si l'appel a réussi, les données ouvertes sont retournées dans ce paramètre.
- env_key
-
- priv_key_id
-
Valeurs de retour
Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.
Exemples
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);
?>
openssl_open
Gareth Owen
17-Feb-2009 05:20
17-Feb-2009 05:20
