(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_seal — Scelle des données
$data
, string &$sealed_data
, array &$encrypted_keys
, array $public_key
, string $cipher_algo
, string &$iv
= null
) : int|false
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.
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.
|
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
.
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);
?>