(PHP 4 >= 4.0.4, PHP 5)
openssl_seal — Scelle des données
openssl_seal() retourne la longueur des données scellées en cas de succès, et FALSE sinon. En cas de succès, les données scellées sont placées dans le paramètre sealed_data , et les clés d'enveloppe dans env_keys .
openssl_seal() scelle (chiffre) les données data en utilisant l'algorithme RC4 avec une clé secrète générée aléatoirement. La clé est chiffrée avec chaque clé publique associée à pub_key_ids et chaque clé ainsi chiffrée est retournée dans env_keys . Cela signifie que vous pouvez envoyer des données scellées à plusieurs destinataires (en supposant que chacun ait reçu la clé publique). Chaque destinataire doit recevoir les données chiffrées et la clé d'enveloppe, qui a été chiffrée avec la clé publique du destinataire.
Exemple 1841. Exemple avec openssl_seal()
<?php
// On suppose que $data contient les données à sceller
// lecture de la clé publique pour chaque destinataire
$fp
=
fopen
(
"/src/openssl-0.9.6/demos/maurice/cert.pem"
,
"r"
);
$cert
=
fread
(
$fp
,
8192
);
fclose
(
$fp
);
$pk1
=
openssl_get_publickey
(
$cert
);
// pour le deuxième destinataire
$fp
=
fopen
(
"/src/openssl-0.9.6/demos/sign/cert.pem"
,
"r"
);
$cert
=
fread
(
$fp
,
8192
);
fclose
(
$fp
);
$pk2
=
openssl_get_publickey
(
$cert
);
// scelle le message : seuls, les possesseurs de $pk1 et $pk2 peuvent déchiffrer
// le message $sealed avec les clés $ekeys[0] et $ekeys[1] (respectivement).
openssl_seal
(
$data
,
$sealed
,
$ekeys
, array(
$pk1
,
$pk2
));
// libère les clés de la mémoire
openssl_free_key
(
$pk1
);
openssl_free_key
(
$pk2
);
?>
Voir aussi openssl_open() .