(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_seal — Scelle des données
$data
,&$sealed_data
,&$encrypted_keys
,$public_key
,$cipher_algo
,&$iv
= null
openssl_seal() scelle (chiffre) les données data
en utilisant la cipher_algo
fournit avec une clé secrète générée aléatoirement. La clé est chiffrée avec chaque clé publique associée à public_key
et chaque clé ainsi chiffrée est retournée dans encrypted_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.
data
Les données à sceller
sealed_data
Les données scellées.
encrypted_keys
Tableau des clés chiffrées.
public_key
Tableau d'instances OpenSSLAsymmetricKey contenant les clés publiques.
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
Le vecteur d'initialisation.
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 encrypted_keys
.
Version | Description |
---|---|
8.0.0 | public_key accepte désormais un tableau d'instance de OpenSSLAsymmetricKey ; auparavant, un tableau de ressources de type OpenSSL key était acceptée. |
8.0.0 | cipher_algo n'est désormais plus un paramètre optionnel. |
8.0.0 | iv est désormais nullable. |
Exemple #1 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);
?>